This is a port of the Django app `humanize` which adds a "human touch" to data.
Latest commit b4ddaa8 Oct 9, 2014 @23maverick23 Update
Added Issue Stats!
Failed to load latest commit information.
.gitignore Updating to v1.1.0 Jul 15, 2014
LICENSE Initial commit Jan 26, 2014
humanize.rb Fix bug where ordinal flag doesn't work. Aug 8, 2014


This began as a port of the Django app humanize which adds a "human touch" to data. Each method represents a Fluid type filter that can be used in your Jekyll site templates. Given that Jekyll produces static sites, some of the original methods do not make logical sense to port (e.g. naturaltime).


Simply download the humanize.rb file and place it in the _plugins directory of your Jekyll site.


Each of the methods in the file presents an available Fluid type filter to be used in Jekyll templates.

There is one optional setting that can be overridden in your _config.yml file. The setting should follow the format below and should be a valid strftime date string. Documentation on strftime can be found at

    date_format: "%m/%d/%Y"

ordinal(value, flag="super")

Converts an integer to its ordinal as a string. 1 is '1st', 2 is '2nd', 3 is '3rd', etc. Works for any integer. An optional flag can be added which puts the ordinal suffix in <sup></sup> tags.

{{ somenum }} >>> 3
{{ somenum | ordinal }} >>> '3rd'
{{ somenum | ordinal: "super" }} >>> '3<sup>rd</sup>'

intcomma(value, delimiter=",")

Converts an integer to a string containing commas every three digits. For example, 3000 becomes '3,000' and 45000 becomes '45,000'. Optionally supports a delimiter override for commas (if you wanted to use periods for European numerical separators).

{{ post.content | number_of_words }} >>> 12345
{{ post.content | number_of_words | intcomma }} >>> '12,345'
{{ post.content | number_of_words | intcomma: '.' }} >>> '12.345'


Converts a large integer to a friendly text representation. Works best for numbers over 1 million. For example, 1000000 becomes '1.0 million'. 1200000 becomes '1.2 million' and 1200000000 becomes '1.2 billion'.

{{ largenum }} >>> 1200000
{{ largenum | intword }} >>> '1.2 million'


For numbers 0-9, returns the number spelled out. Otherwise, returns the number. This follows the Associated Press style.

{{ num }} >>> 6
{{ num | apnumber }} >>> 'six'


For date values that are within a 9 day stretch from present day, this will attempt to return the string representation in the format of today, tomorrow, yesterday, "in # days" or "# days ago". Otherwise, returns a string formatted according to the date_format setting in your _config.yml file using strftime format. If not defined, it will default to %m/%d/%Y.

# TODAY == '01/26/2014'
{{ post.updated }} >>> 01/25/2014
{{ post.updated | naturalday }} >>> 'yesterday'
{{ }} >>> 01/19/2014
{{ | naturalday }} >>> 'seven days ago'


For filesize values in bytes, returns the number rounded to 3 decimal places with the correct suffix.

{{ bytes }} >>> 123456789
{{ bytes | filesize }} >>> 117.738 MB



Django Humanize

Copyright (c) Django Software Foundation and individual contributors. All rights reserved.

Source code for the original Django app can be viewed at


Filesize format forked from javascript to ruby from




Issue Stats

You can log issues from the menu at right, or by clicking here. Curious about responsiveness? Check out our Issue Stats!


Issue Stats

  1. Fork this repo.
  2. Create a branch git checkout -b my_feature
  3. Commit your changes git commit -am "Added Feature"
  4. Push to the branch git push origin my_feature
  5. Open a Pull Request