Data format

ARB converter

An .arb file is an Application Resource Bundle: a JSON object in which each key maps to a translatable string, and keys prefixed with @ carry that string's metadata — its description, its placeholder types and their formatting. It is the localisation format Flutter's intl tooling generates from and compiles to typed Dart accessors.

Private for supported formats — processed in your browser

Convert supported files

Runs on your device

Drop ARB files here

Batch files can each use a different output. Nothing uploads for local conversions.

Working inputs include camera RAW, browser-local audio/video, PDF, CBZ/CBR comics, office documents, ebooks, markup, 3D models, structured text, images, and archives.

Where ARB comes from

ARB was published by Google as a JSON-based resource format aimed at web and mobile applications, and found its real audience when Flutter adopted it as the input to its gen_l10n tooling. Its distinguishing idea is that translator-facing metadata belongs inside the resource next to the string, rather than in comments a tool has to scrape — which is why it can express typed placeholders that most flat formats cannot.

How ARB works

  • The document is a single JSON object; ordinary keys map to strings, and @-prefixed keys map to metadata objects for the key of the same name.
  • Reserved global keys such as @@locale and @@last_modified describe the bundle itself.
  • Metadata objects carry description plus a placeholders map declaring each placeholder's type and format — DateTime, number, currency and so on.
  • Messages use ICU MessageFormat, so plurals and gender selection live inside the string rather than in separate entries.
  • Because it is JSON, an ARB file is trivially machine-readable and diffs reasonably well.

When to use ARB

  • Localising a Flutter application through gen_l10n
  • Carrying typed placeholder information to translators so dates and currencies format per locale
  • Handing Flutter strings to a translation platform
  • Converting a flat catalog into ARB as the first step of a Flutter migration

Strengths and limitations

Strengths

  • Metadata lives with the string, so translators get context without a separate file
  • ICU MessageFormat covers plurals and gender without extra entries
  • Plain JSON — readable by any tool without a bespoke parser

Limitations

  • The @-key convention doubles the entry count and looks odd to anyone new to it
  • Little support outside the Flutter ecosystem
  • ICU messages are powerful but easy for a translator to break

Compatibility

Flutter's tooling reads ARB natively and the major translation platforms support it; elsewhere it is just JSON. Novus Convert flattens the bundle locally, skipping @-prefixed metadata keys so they do not appear as translatable entries, and converts to and from the other localization formats. Placeholder metadata and ICU plural structure are not representable in flat targets.

Keys and their translated values are preserved. @-prefixed metadata — descriptions, placeholder types and formats — and the @@locale marker are skipped rather than converted, because flat key-value targets have nowhere to put them.