truncates html so you don't have to
Latest commit a09ddcd May 5, 2015 @parndt parndt Merge pull request #63 from olivierlacan/patch-1
Use SVG badges instead of PNG ones
Failed to load latest commit information.
lib Bump to version 0.9.3 Sep 19, 2014
spec ensure closing tags are appended when using custom word boundaries Sep 16, 2014
.gitignore Upgrade to Rails 3 Mar 30, 2010
.travis.yml make it work in ruby 2.0 Feb 28, 2013
Gemfile General updating of gem management Feb 20, 2012
Gemfile.lock re Bundle Sep 19, 2014
LICENSE Added the MIT license Mar 25, 2010 Use SVG badges instead of PNG ones May 5, 2015
Rakefile Just use #system Feb 20, 2012
VERSION version number fixed, small space Mar 18, 2013
init.rb [Bug: #5] - autoloading of default configuration. Mar 23, 2010


Build Status Code Climate

truncate_html cuts off a string of HTML and takes care of closing any lingering open tags. There are many ways to solve this. This library does not have any dependencies, and parses HTML using regular expressions.

It can be used with or without Rails.


some_html = '<ul><li><a href="http://whatever">This is a link</a></li></ul>'
truncate_html(some_html, length: 15, omission: '...(continued)')
  => <ul><li><a href="http://whatever">This...(continued)</a></li></ul>

A few notes:

  • By default, it will truncate on word boundary. To truncate the HTML string strictly at the specified length, pass in the word_boundary: false option.
  • If the input HTML is nil, it will return an empty string.
  • The omission text's length does count toward the resulting string's length.
  • <script> tags will pass right through - they will not count toward the resulting string's length, or be truncated.

  • The default options are:

length: 100
omission: '...'
word_boundary: /\S/

You may also set global configuration options. For example, place the following on application boot, something like config/initializers/truncate_html.rb

TruncateHtml.configure do |config|
  config.length        = 50
  config.omission      = '...(continued)'

If you really want, you can even set a custom word boundary regexp. For example, to truncate at the end of the nearest sentence:

TruncateHtml.configure do |config|
  config.word_boundary = /\S[\.\?\!]/

You can also truncate the HTML at a specific point not based on length but content. To do that, place the :break_token in your source. This allows the truncation to be data driven, breaking after a leading paragraph or sentence. If the :break_token is in your content before the specified :length, :length will be ignored and the content truncated at :break_token. If the :break_token is in your content after the specified :length, :break_token will be ignored and the content truncated at :length.

TruncateHtml.configure do |config|
  config.break_token = '<!-- truncate -->'


The latest gem version for the Rails 2.x series is 0.3.2. To use truncate_html on a Rails 2 app, please install the 0.3.2 version:

gem install truncate_html -v 0.3.2

For Rails 3, use the latest truncate_html:

gem install truncate_html

Issues or Suggestions

Found an issue or have a suggestion? Please report it on Github's issue tracker.



All green? Go hack.

Copyright (c) 2009 - 2010 Harold A. Giménez, released under the MIT license

Thanks to all the contributors!