Quickly process HTML files to extract text content and generate standardized internationalization JSON resource files, streamlining multilingual website development.
<div class="header">
<h1>Welcome</h1>
<p>Sample text</p>
<button>Start</button>
</div>{
"header.title": "Welcome",
"header.description": "Sample text",
"header.button": "Start"
}Two powerful flows: extract copy from HTML into JSON, and restore original HTML from keyed templates using JSON
Powerful HTML parsing capabilities that accurately identify and extract text content from various tags while automatically filtering scripts and style code
Automatically generates i18n-standard JSON resource files with key-value mappings and nested structures for direct integration
Provide translation JSON and t(...) keyed HTML to rebuild original HTML and recover copy without altering your templates
We've simplified the HTML internationalization process to complete the entire workflow in just minutes
Select or drag and drop your HTML files for processing. Supports multiple files for batch processing.
Set extraction rules, prefixes, and exclusions to customize the output structure for specific requirements.
Generate and download JSON format internationalization resource files for immediate integration into your project.
Experience how our tool transforms HTML content into structured internationalization resources
<div class="header">
<h1>Welcome to our service</h1>
<p>This is a sample text to demonstrate i18n extraction.</p>
<button title="Click to continue">Get Started</button>
</div>{
"header.title": "Welcome to our service",
"header.description": "This is a sample text to demonstrate i18n extraction.",
"header.button.text": "Get Started",
"header.button.title": "Click to continue"
}After extraction, you can easily integrate the JSON files with popular i18n libraries:
// React + i18next (example)
import i18n from 'i18next'
import { useTranslation } from 'react-i18next'
import translations from './translations.json'
i18n.init({ resources: { en: { translation: translations } } })
function Header() {
const { t } = useTranslation()
return (
<div className="header">
<h1>{t('header.title')}</h1>
<p>{t('header.description')}</p>
<button title={t('header.button.title')}>{t('header.button.text')}</button>
</div>
)
}Start extracting internationalization resources from your HTML files today and streamline your multilingual development
Start Using NowInternationalizing a web application starts with extraction: finding every user-facing string in your markup and organizing it into a translation file. Done by hand this is tedious and error-prone; done on a server you must upload your source. This parser does it locally - paste your HTML (or a template from Vue, React, Svelte, or plain markup) and it extracts every candidate string, deduplicates it, and outputs clean JSON (or CSV) ready to hand to translators or a CMS.
The extraction is pattern-aware: it skips script and style blocks, strips attributes that are not user-visible, flags strings that look like URLs or placeholders, and preserves interpolation markers (, {count}) so translators see exactly what gets filled at runtime. The result is a structured, sorted list where each string has a stable key, context (surrounding text), and occurrence count.
Translation files are the backbone of your localization pipeline: they go to machine translation, to human translators, into your CI. Keeping the extraction step offline means your source markup - which often contains product names, unreleased features, and proprietary copy - is never sent to a third party. Re-running the parser after each sprint gives you a diff of newly added strings, which is exactly what a continuous localization workflow needs.