Free APIs, Khmer font guides, and code snippets for developers building for Cambodia. Built from our own production infrastructure.
We operate several public APIs and build bilingual (Khmer/English) web applications every day. This page collects the resources we have open-sourced or made publicly available. Everything here is used in our own products — nothing is a demo or a toy.
Look up postal codes, communes, districts, and provinces for any location in Cambodia. The dataset covers all 25 provinces and is maintained from official sources.
Base URL
https://api.cambodiapostalcode.comExamples
Get all provinces
curl https://api.cambodiapostalcode.com/api/v1/provincesSearch by postal code
curl https://api.cambodiapostalcode.com/api/v1/postal-codes?code=12201JavaScript fetch
const res = await fetch('https://api.cambodiapostalcode.com/api/v1/provinces');
const data = await res.json();Rate limit
Free tier: 100 requests/minute. No API key required for basic lookups.
Terms
Free for commercial and non-commercial use. Attribution appreciated but not required.
Get public holidays for any country and year. Covers 190+ countries with accurate, up-to-date holiday data including regional variations.
Base URL
https://api.worldpublicholiday.comExamples
Get holidays for Cambodia 2026
curl https://api.worldpublicholiday.com/api/v1/holidays?country=KH&year=2026JavaScript fetch
const res = await fetch('https://api.worldpublicholiday.com/api/v1/holidays?country=KH&year=2026');
const data = await res.json();Rate limit
Free tier: 60 requests/minute. No API key required for basic queries.
Terms
Free for commercial and non-commercial use. Data is sourced from official government sources where available.
Khmer fonts are large — 200KB+ per weight. This guide shows how to subset Khmer fonts to under 30KB while keeping all necessary glyphs, using pyftsubset and our production script.
Read guideUnicode normalisation, Limon-to-Unicode conversion, correct line breaking, and search collation for Khmer text. Copy-paste ready.
Read guideFull API documentation, interactive playground, and API key management for the Cambodia Postal Code API.
Visit resourceKhmer fonts include hundreds of glyphs for conjuncts and independent vowels, making them 5-10x larger than Latin fonts. Subsetting removes unused glyphs while keeping everything needed for body text. This is the same process we use on all our production sites.
Khmer text can be stored in composed or decomposed Unicode form. Normalise to NFC before storing or comparing.
// JavaScript — normalise Khmer text to NFC
const text = 'សួស្តី';
const normalised = text.normalize('NFC');Khmer does not use spaces between words. Use CSS line-break: anywhere or word-break: break-word for correct wrapping, or use a Khmer word segmentation library.
/* CSS — correct Khmer line breaking */
.khmer-text {
line-break: anywhere;
word-break: break-word;
/* Or use a segmentation library for proper word boundaries */
}Convert between Arabic numerals (123) and Khmer numerals (១២៣) for display.
// JavaScript — Arabic to Khmer numerals
function toKhmerNumeral(num) {
const khmerDigits = '០១២៣៤៥៦៧៨៩';
return String(num).replace(/\d/g, d => khmerDigits[+d]);
}
// toKhmerNumeral(123) → '១២៣'These resources are built and maintained by Inventodia, a software studio based in Cambodia. We use them in our own production products every day. If you find them useful, we hope you will consider us for your next project — but there is no obligation. We publish them because good developer documentation for the Cambodian market is scarce, and we would rather it exist.