Learn about our RFC process, Open RFC meetings & more.Join in the discussion! »


3.1.0 • Public • Published


General utilities for working with Gurmukhi text data.

CircleCI Coveralls github npm license Try on RunKit

Want to speak with us?




The library can be imported into Node as below:

const {
= require( 'gurmukhi-utils' )
toUnicode('Koj')    // => ਖੋਜ
toAscii('ਖੋਜ')      // => Koj
firstLetters('ਹਰਿ ਹਰਿ ਹਰਿ ਗੁਨੀ')   // => ਹਹਹਗ
toEnglish('hukmI hukmu clwey rwhu ]')  // => hukamee hukam chalaae raahu ||
toHindi('ਕੁਲ ਜਨ ਮਧੇ ਮਿਲੵੋਿ ਸਾਰਗ ਪਾਨ ਰੇ ॥')    // => कुल जन मधे मिल्यो सारग पान रे ॥
toShahmukhi('ਹਰਿ ਹਰਿ ਹਰਿ ਗੁਨੀ') // => هر هر هر گُنی
stripAccents('ਜ਼ਫ਼ੈਸ਼ਸ') // => ਜਫੈਸਸ
stripVishraams('sbid mrY. so mir rhY; iPir.') // => sbid mrY so mir rhY iPir
stripEndings('ਸੋ ਘਰੁ ਰਾਖੁ; ਵਡਾਈ ਤੋਇ ॥੧॥ ਰਹਾਉ ॥') // => ਸੋ ਘਰੁ ਰਾਖੁ; ਵਡਾਈ ਤੋਇ
isGurmukhi('ਗੁਰਮੁਖੀ') // => true

Additionally, the package is available for web use via unpkg CDN.

<script src="https://unpkg.com/gurmukhi-utils"></script>

Want to play around? Try gurmukhi-utils on RunKit


firstLetters(line) ⇒ String

Generates the first letters for a unicode Gurmukhi, Hindi transliteration, or English transliteration string. Includes any end-word vishraams, and line-end characters.

Returns: String - The first letters of each word in the provided Gurmukhi line.

Param Type Description
line String The line to generate the first letters for.

Example (Gurmukhi first letters)

firstLetters('ਸਬਦਿ ਮਰੈ. ਸੋ ਮਰਿ ਰਹੈ; ਫਿਰਿ. ਮਰੈ ਨ, ਦੂਜੀ ਵਾਰ ॥') // => ਸਮ.ਸਮਰ;ਫ.ਮਨ,ਦਵ॥

Example (Hindi first letters)

firstLetters('गुरमुखि लाधा मनमुखि गवाइआ ॥') // => गलमग॥

Example (English first letters)

firstLetters('sabad marai. so mar rahai; fir. marai na, doojee vaar |') // => sm.smr;f.mn,dv|

isGurmukhi(text, [exhaustive]) ⇒ boolean

Checks if first char in string is part of the Gurmukhi Unicode block.

Returns: boolean - True if Unicode Gurmukhi, false if other.

Param Type Description
text String The text to check.
[exhaustive] boolean If true, checks if the whole string is Unicode Gurmukhi.


isGurmukhi('ਗੁਰਮੁਖੀ') // => true
isGurmukhi('gurmuKI') // => false

stripAccents(text) ⇒ String

Removes accents from ASCII/Unicode Gumrukhi letters with their base letter. Useful for generalising search queries.

Returns: String - A simplified version of the provided Gurmukhi string.

Param Type Description
text String The text to convert.


stripAccents('ਜ਼ਫ਼ੈਸ਼ਸਓ') // => ਜਫੈਸਸੳ
stripAccents('Z^Svb') // => gKsvb

stripEndings(text) ⇒ String

Strips line endings from any Gurmukhi or translation string. Accepts both Unicode and ASCII input. Useful for generating accurate first letters or modifying non-Gurbani for better display. Not designed for headings or Sirlekhs.

Returns: String - A ending-less version of the text.

Param Type Description
text String The text to stip endings from.

Example (Line ending phrases)

stripEndings('ਸੋ ਘਰੁ ਰਾਖੁ; ਵਡਾਈ ਤੋਇ ॥੧॥ ਰਹਾਉ ॥') // => ਸੋ ਘਰੁ ਰਾਖੁ; ਵਡਾਈ ਤੋਇ
stripEndings('ਹੁਕਮੁ ਪਛਾਣਿ; ਤਾ ਖਸਮੈ ਮਿਲਣਾ ॥੧॥ ਰਹਾਉ ਦੂਜਾ ॥') // => ਹੁਕਮੁ ਪਛਾਣਿ; ਤਾ ਖਸਮੈ ਮਿਲਣਾ
stripEndings('ਜਨ ਨਾਨਕ. ਗੁਰਮੁਖਿ ਜਾਤਾ ਰਾਮ ॥੪॥੬॥ ਛਕਾ ੧ ॥') // => ਜਨ ਨਾਨਕ. ਗੁਰਮੁਖਿ ਜਾਤਾ ਰਾਮ

Example (English Translations)

stripEndings('O Nanak, Forever And Ever True. ||1||') // => O Nanak, Forever And Ever True.
stripEndings('lush greenery. ||1||Pause||') // => lush greenery.
stripEndings('always I live within the Khalsa. 519') // => always I live within the Khalsa.
stripEndings('without your reminiscence.(1) (3)') // => without your reminiscence.

Example (Spanish Translations)

stripEndings('ofrece su ser en sacrificio a Ti. (4-2-9)') // => ofrece su ser en sacrificio a Ti.

stripVishraams(text, options) ⇒ String

Removes the specified vishraams from a string.

Returns: String - A vishraam-less Gurmukhi string.

Param Type Description
text String The text to remove vishraams from.
options Object The vishraams to remove. Defaults to all.

Example (Text only, default options)

stripVishraams('ਸਬਦਿ ਮਰੈ. ਸੋ ਮਰਿ ਰਹੈ;') // => 'ਸਬਦਿ ਮਰੈ ਸੋ ਮਰਿ ਰਹੈ
stripVishraams('sbid mrY. so mir rhY; iPir.') // => sbid mrY so mir rhY iPir

Example (Heavy vishraams only)

stripVishraams('sbid mrY. so mir rhY; iPir.', { heavy: true }) // => sbid mrY. so mir rhY iPir.

Example (Medium vishrams only)

stripVishraams('Anhd sbd vjwey,', { medium: true }) // => Anhd sbd vjwey

Example (Light vishrams only)

stripVishraams('sbid mrY. so mir rhY; iPir.', { light: true }) // => sbid mrY so mir rhY; iPir

toAscii(text) ⇒ String

Converts Gurmukhi unicode text to ASCII, used GurmukhiAkhar font.

Returns: String - An ASCII representation of the provided unicode Gurmukhi string.

Param Type Description
text String The unicode text to convert.


toAscii('ਹਮਾ ਸਾਇਲਿ ਲੁਤਫ਼ਿ ਹਕ ਪਰਵਰਸ਼ ॥') // => hmw swieil luqi& hk prvrS ]
toAscii('ਸੁ ਬੈਠਿ ਇਕੰਤ੍ਰ ॥੫੭੮॥') // => su bYiT iekMqR ]578]

toEnglish(line) ⇒ String

Transliterates a line from Unicode Gurmukhi to english. Currently supports the ,, ;, . vishraam characters.

Returns: String - The English transliteration of the provided Gurmukhi line.

Param Type Description
line String The Gurmukhi Unicode line to transliterate.


toEnglish('ਹੁਕਮੀ ਹੁਕਮੁ ਚਲਾਏ ਰਾਹੁ ॥') // => hukamee hukam chalaae raahu ||


toEnglish('ਭਾਂਡਾ ਭਾਉ ਅੰਮ੍ਰਿਤੁ ਤਿਤੁ ਢਾਲਿ ॥') // => bhaa(n)ddaa bhaou anmrit tit dtaal ||

toHindi(text) ⇒ String

Transliterates Unicode Gurmukhi text to Hindi (Devanagari script).

Returns: String - A Hindi transliteration of the provided Unicode Gurmukhi string.

Param Type Description
text String The Unicode Gurmukhi text to convert.


toHindi('ਕੁਲ ਜਨ ਮਧੇ ਮਿਲੵੋਿ ਸਾਰਗ ਪਾਨ ਰੇ ॥') // => कुल जन मधे मिल्यो सारग पान रे ॥
toHindi('ਸੁ ਬੈਠਿ ਇਕੰਤ੍ਰ ॥੫੭੮॥') // => सु बैठ इकंत्र ॥५७८॥

toShahmukhi(text) ⇒ String

Transliterates Unicode Gurmukhi text to the Shahmukhi script.

Returns: String - A Shahmukhi transliteration of the provided Unicode Gurmukhi string.

Param Type Description
text String The Unicode Gurmukhi text to convert.


toShahmukhi('ਹਮਾ ਸਾਇਲਿ ਲੁਤਫ਼ਿ ਹਕ ਪਰਵਰਸ਼ ॥') // => هما ساِال لُتف هک پرورش ۔۔
toShahmukhi('ਸੁ ਬੈਠਿ ਇਕੰਤ੍ਰ ॥੫੭੮॥') // => سُ بَےٹھ ِاکںتر ۔۔۵۷۸۔۔

toUnicode(text) ⇒ String

Converts ASCII text used in the GurmukhiAkhar font to Unicode.

Returns: String - A unicode representation of the provided ASCII Gurmukhi string.

Param Type Description
text String The ASCII text to convert.


toUnicode('kul jn mDy imil´o swrg pwn ry ]') // => ਕੁਲ ਜਨ ਮਧੇ ਮਿਲੵੋਿ ਸਾਰਗ ਪਾਨ ਰੇ ॥
toUnicode('su bYiT iekMqR ]578]') // => ਸੁ ਬੈਠਿ ਇਕੰਤ੍ਰ ॥੫੭੮॥


We're happy to accept suggestions and pull requests!

To get started, clone this repo and run npm install inside this directory.

This repository follows the Airbnb's Javascript Style Guide, with a few minor modifications. Notably, spaces should be included inside parentheses and brackets (weird, right!). An ESLint file is provided, and your code will automatically be checked on-commit for style. It is recommended to install an ESLint plugin for your editor (VS Code's ESLint plugin works out of the box), so you can receive linter suggestions as you type.

When writing commit messages, please follow the seven rules. Markdown and HTML JSDoc documentation is generated automatically, on commit, however if you'd like to preview any changes to documentation, npm run build-docs will update README.md and the files in docs/. README.md should not be edited, instead apply modifications to README.hbs.

The general workflow for contributing:

  • Fork/create a new branch.
  • Write or update existing tests with expected results
  • Implement functions/changes
  • Add JSDoc function documentation and examples.
  • Run tests with npm test and ensure they all pass. Testing is done with the mocha testing framework.
  • Create a pull request with the changes.

Note to contributors with push access to master: Any commits or merge commits containing the strings #Major, #Minor, #Patch (case-sensitive) will trigger an automatic npm release with the respective semver bump.


npm i gurmukhi-utils

DownloadsWeekly Downloads






Unpacked Size

208 kB

Total Files


Last publish


  • avatar