Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Cross-browser multiline text ellipsis for react

Inspired by:

Internally uses:


npm install --save react-dotdotdot

Sample usage

import React from 'react'
import Dotdotdot from 'react-dotdotdot'


render() {
	return (
			<Dotdotdot clamp={3}>
					Long, long <br />
					content,<br />
					3 lines <br />
					will be shown.

Dotdotdot props:

clamp (Number | String | 'auto'). This controls where and when to clamp the text of an element. Submitting a number controls the number of lines that should be displayed. Second, you can submit a CSS value (in px or em) that controls the height of the element as a String. Finally, you can submit the word 'auto' as a string. Auto will try to fill up the available space with the content and then automatically clamp once content no longer fits. This last option should only be set if a static height is being set on the element elsewhere (such as through CSS) otherwise no clamping will be done.

useNativeClamp: [default: true] Use -webkit-line-clamp available in Webkit (Chrome, Safari) only.

splitOnChars: [default: ['.', '-', '–', '—', ' ']] Split on sentences (periods), hypens, en-dashes, em-dashes, and words (spaces).

animate: [default: false] animated clamp

truncationChar: The character to insert at the end of the HTML element after truncation is performed. This defaults to an ellipsis (…). useNativeClamp overrides it to default.

truncationHTML: String of HTML to use instead of truncationChar

tagName: [default: div] (String). The type of HTML tag which will wrap the component's content.


React-dotdotdot is simple plugin, if you need more functionality, consider using react-truncate

Known issues:

  • react-dotdotdot does not work with text containers with nested markup.
  • padding-bottom CSS rule breaks clamp
  • line-height units might be important for React-dotdotdot. We recommend px over em



  • Update TypeScript definition to add missing props (thanks @tuxracer)
  • round line-height value from computed float value - IE11 fix (thanks @YoonjiJang)


  • useNativeClamp prop is set to false by default, it was causing some issues.
  • Comments are not counted as a text anymore
  • Remove Github's potential security vulnerability with react-dom


  • Added TypeScript typings (thanks @vojty and @feimosi)


  • Add the option to choose a tag other than div (thanks @Kalita-Roman)
  • Fix demo on Firefox
  • Added .npmignore to limit package size


  • Revert: Fix break word for long text
  • Update documentation


  • Update documentation
  • Re-trigger clamp on window.load
  • Allow for all params to passed to clamp-js (splitOnChars, animate, etc)


  • Fix word breaking for long text (issues #21 and #15; Thanks @krzysztofczernek).
  • calculate correct height for many childs + clamp: 'auto' (thanks @rurquia)
  • Update dependencies to support react 16 (thanks @emersonbroga)


  • Support for IE11, Edge and Firefox (thanks, @kkwiatkowski)


  • Remove clamp-js from package.json dependencies, as it's not maintained anymore.
  • Bugfix for TypeError: elem.lastChild is null in Firefox.