---
title: "django.contrib.humanize"
version: 3.1
locale: en
source: https://docs.djangoproject.com/en/3.1/ref/contrib/humanize/
canonical: https://djangodocs.dev/en/3.1/ref/contrib/humanize/
---
# `django.contrib.humanize`

A set of Django template filters useful for adding a “human touch” to data.

To activate these filters, add `'django.contrib.humanize'` to your
[`INSTALLED_APPS`](/en/3.1/ref/settings/#std-setting-INSTALLED_APPS) setting. Once you’ve done that, use
`{% load humanize %}` in a template, and you’ll have access to the following
filters.

## `apnumber`

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

Examples:

- `1` becomes `one`.
- `2` becomes `two`.
- `10` becomes `10`.

You can pass in either an integer or a string representation of an integer.

## `intcomma`

Converts an integer or float (or a string representation of either) to a string
containing commas every three digits.

Examples:

- `4500` becomes `4,500`.
- `4500.2` becomes `4,500.2`.
- `45000` becomes `45,000`.
- `450000` becomes `450,000`.
- `4500000` becomes `4,500,000`.

[Format localization](/en/3.1/topics/i18n/formatting/) will be respected if enabled,
e.g. with the `'de'` language:

- `45000` becomes `'45.000'`.
- `450000` becomes `'450.000'`.

## `intword`

Converts a large integer (or a string representation of an integer) to a
friendly text representation. Translates `1.0` as a singular phrase and all
other numeric values as plural, this may be incorrect for some languages. Works
best for numbers over 1 million.

Examples:

- `1000000` becomes `1.0 million`.
- `1200000` becomes `1.2 million`.
- `1200000000` becomes `1.2 billion`.
- `-1200000000` becomes `-1.2 billion`.

Values up to 10^100 (Googol) are supported.

[Format localization](/en/3.1/topics/i18n/formatting/) will be respected if enabled,
e.g. with the `'de'` language:

- `1000000` becomes `'1,0 Million'`.
- `1200000` becomes `'1,2 Millionen'`.
- `1200000000` becomes `'1,2 Milliarden'`.
- `-1200000000` becomes `'-1,2 Milliarden'`.

> **Changed in Django 3.0**
>
> All numeric values are now translated as plural, except `1.0` which is
> translated as a singular phrase. This may be incorrect for some languages.

> **Changed in Django 3.1**
>
> Support for negative integers was added.

## `naturalday`

For dates that are the current day or within one day, return “today”,
“tomorrow” or “yesterday”, as appropriate. Otherwise, format the date using
the passed in format string.

**Argument:** Date formatting string as described in the [`date`](/en/3.1/ref/templates/builtins/#std-templatefilter-date) tag.

Examples (when ‘today’ is 17 Feb 2007):

- `16 Feb 2007` becomes `yesterday`.
- `17 Feb 2007` becomes `today`.
- `18 Feb 2007` becomes `tomorrow`.
- Any other day is formatted according to given argument or the
  [`DATE_FORMAT`](/en/3.1/ref/settings/#std-setting-DATE_FORMAT) setting if no argument is given.

## `naturaltime`

For datetime values, returns a string representing how many seconds,
minutes or hours ago it was – falling back to the [`timesince`](/en/3.1/ref/templates/builtins/#std-templatefilter-timesince)
format if the value is more than a day old. In case the datetime value is in
the future the return value will automatically use an appropriate phrase.

Examples (when ‘now’ is 17 Feb 2007 16:30:00):

- `17 Feb 2007 16:30:00` becomes `now`.
- `17 Feb 2007 16:29:31` becomes `29 seconds ago`.
- `17 Feb 2007 16:29:00` becomes `a minute ago`.
- `17 Feb 2007 16:25:35` becomes `4 minutes ago`.
- `17 Feb 2007 15:30:29` becomes `59 minutes ago`.
- `17 Feb 2007 15:30:01` becomes `59 minutes ago`.
- `17 Feb 2007 15:30:00` becomes `an hour ago`.
- `17 Feb 2007 13:31:29` becomes `2 hours ago`.
- `16 Feb 2007 13:31:29` becomes `1 day, 2 hours ago`.
- `16 Feb 2007 13:30:01` becomes `1 day, 2 hours ago`.
- `16 Feb 2007 13:30:00` becomes `1 day, 3 hours ago`.
- `17 Feb 2007 16:30:30` becomes `30 seconds from now`.
- `17 Feb 2007 16:30:29` becomes `29 seconds from now`.
- `17 Feb 2007 16:31:00` becomes `a minute from now`.
- `17 Feb 2007 16:34:35` becomes `4 minutes from now`.
- `17 Feb 2007 17:30:29` becomes `an hour from now`.
- `17 Feb 2007 18:31:29` becomes `2 hours from now`.
- `18 Feb 2007 16:31:29` becomes `1 day from now`.
- `26 Feb 2007 18:31:29` becomes `1 week, 2 days from now`.

## `ordinal`

Converts an integer to its ordinal as a string.

Examples:

- `1` becomes `1st`.
- `2` becomes `2nd`.
- `3` becomes `3rd`.

You can pass in either an integer or a string representation of an integer.
