Rohan Shewale's Blog

Format a number as an ordinal

February 25, 2025 | 1 Minute Read

Format a number as an ordinal, e.g. 3 to 3rd.

/**
 * Format a number as an ordinal, e.g. `3` to `3rd`
 * @param {number} number To format
 */
const english_ordinal_rules = new Intl.PluralRules('en', { type: 'ordinal' });
export function formatNumberOrdinal(number: number) {
  const category = english_ordinal_rules.select(number);

  switch (category) {
    case 'one': {
      return `${number}st`;
    }

    case 'two': {
      return `${number}nd`;
    }

    case 'few': {
      return `${number}rd`;
    }

    default: {
      return `${number}th`;
    }
  }
}

ref: stackoverflow.com/a/57518703/223225