API & playground

Try it. Copy the snippet. Ship.

The Interscript REST API runs at https://interscript.org/api/ — open to all, no auth, no rate limits (yet). Three endpoints: /api/transliterate, /api/systems, /api/detect. Or run the same engine locally in JS, TypeScript, Ruby, or your terminal.

# Live, no install needed:
curl -G 'https://interscript.org/api/transliterate' \
  --data-urlencode 'system=bgnpcgn-ukr-Cyrl-Latn-2019' \
  --data-urlencode 'input=Антон'
# → {"system":"bgnpcgn-ukr-Cyrl-Latn-2019","input":"Антон","output":"Anton",…}

Install

One line per runtime.

TypeScript / JavaScript

npm

npm install interscript-ts
import { transliterate } from "interscript-ts"

const out = transliterate(
  "bgnpcgn-ukr-Cyrl-Latn-2019",
  "Антон"
)
// → "Anton"
Ruby

gem

gem install interscript
require "interscript"

out = Interscript.transliterate(
  "bgnpcgn-ukr-Cyrl-Latn-2019",
  "Антон"
)
# → "Anton"
Browser

CDN

npm install interscript-ts
# or: https://esm.sh/interscript-ts
import {
  transliterateAsync,
  httpStrategy,
  configure
} from "https://esm.sh/interscript-ts"

configure({
  strategies: [httpStrategy({
    baseUrl: "https://interscript.org/maps"
  })]
})

const out = await transliterateAsync(
  "bgnpcgn-ukr-Cyrl-Latn-2019",
  "Антон"
)

Embed widget

Drop-in transliteration for any site.

One iframe. No build step. Visitors get a live transliteration field; you keep your stack.

<iframe
  src="https://interscript.org/embed?system=bgnpcgn-ukr-Cyrl-Latn-2019"
  width="100%" height="220"
  style="border:1px solid #d8d0bc"
></iframe>

CLI & CI

Transliterate from the terminal.

The interscript-ts CLI runs anywhere Node does — your laptop, a build pipeline, a GitHub Action. Same engine, same maps, same byte-for-byte output.

CLI

Install

npm install -g interscript-ts
# or use without installing:
npx interscript-ts --help
CLI

Single call

# Transliterate from stdin
echo "Антон" | interscript-ts t bgnpcgn-ukr-Cyrl-Latn-2019
# → Anton

# Or from a file
interscript-ts t bgnpcgn-ukr-Cyrl-Latn-2019 \
  -i input.txt -o output.txt
CLI

Batch (CSV)

# names.txt has one name per line
interscript-ts b bgnpcgn-ukr-Cyrl-Latn-2019 \
  names.txt --csv > romanized.csv

# Or: list every BGN/PCGN Cyrillic system
interscript-ts list --authority bgnpcgn \
  --source-script Cyrl --maps-dir ./maps
GitHub Action

CI step

# .github/workflows/romanize.yml
name: Romanize names
on: { push: { paths: ['names.txt'] } }
jobs:
  romanize:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with: { node-version: '20' }
      - run: npx interscript-ts@latest \
            b bgnpcgn-ukr-Cyrl-Latn-2019 \
            names.txt --csv \
            --http https://interscript.org/maps \
            > romanized.csv
      - uses: actions/upload-artifact@v4
        with: { name: romanized, path: romanized.csv }