What is the STRINGS file format?
A .strings file is a text file that stores localized display strings - alerts, error messages, button labels, and other UI text - for macOS and iOS applications. Many .strings files containing various alert, notification, and error messages are stored within the app bundle, organized into language-specific .lproj directories (for example, en.lproj/ for English or fr.lproj/ for French). The operating system selects the correct .lproj folder at runtime to display locale-appropriate text.
The most common filename is Localizable.strings - the default file Xcode looks up automatically. Each entry follows a simple key-value syntax: "key" = "value"; - keys and values are quoted strings, separated by = and terminated with a semicolon. Comments use C-style /* */ or // syntax. Source .strings files are encoded as UTF-8 (preferred since Xcode 10) or historically as UTF-16 with a byte-order mark.
A .strings file can be opened and edited by Apple Xcode, MacroMates TextMate, BBEdit, VS Code, or any plain-text editor. During an Xcode build, source .strings files are compiled into binary property list format inside the app bundle, so deployed files differ from the source text.
Apple introduced .xcstrings (String Catalogs) in Xcode 15 (2023) as a modern JSON-based alternative with built-in plural and grammatical variant support. The .strings format remains fully supported and widely used across macOS, iOS, iPadOS, tvOS, and watchOS.
Security & safety
RISK: LOW.strings files are plain text with no executable content. No security risk from opening them. When modifying strings inside a third-party app bundle (jailbreak/mod) you may violate the app's license or terms of service.
Format details
in a nutshellPrograms that open STRINGS files
Technical details
deep spec| Encoding | UTF-8 (preferred, Xcode 10+); UTF-16 LE or BE with BOM (legacy convention) |
| Legacy BOM | UTF-16 LE: `FF FE`; UTF-16 BE: `FE FF`; compiled binary plist form starts with `bplist` (hex 62 70 6C 69 73 74) |
| Entry syntax | `"key" = "value";` - both key and value double-quoted; semicolon terminator required |
| Comment syntax | C-style `/* block comment */` or `//` line comments |
| Directory convention | Files placed in `.lproj` directories named by locale (e.g. `en.lproj/`, `ja.lproj/`, `fr.lproj/`) |
| Default filename | `Localizable.strings` - the file Xcode searches for user-visible strings by default |
| Compiled form | Xcode converts source `.strings` to binary plist during the app build; deployed app bundles contain binary, not source text |
| Plural/gender rules | A paired `.stringsdict` file (XML plist) in the same `.lproj` handles plural forms and grammatical variants |
| Successor format | `.xcstrings` (String Catalogs, JSON-based, Xcode 15 / 2023) is the modern replacement for new projects |
| MIME type | `text/plain` for source form; compiled binary form is `application/octet-stream` |
| Platform scope | macOS, iOS, iPadOS, tvOS, watchOS, and visionOS |
| Build tooling | `genstrings` extracts string literals from source code into `.strings` files; `ibtool` compiles them to binary plist in the app bundle |
| Released | Mac OS X 10.0 (March 2001); later adopted for iOS (2007) |
| Latest version | Strings files remain current; Apple introduced .xcstrings (String Catalogs) in Xcode 15 / 2023 as a modern alternative |
| Specification | developer.apple.com |
STRINGS conversions
Community Q&A
asked by usersNo questions yet - be the first to ask about STRINGS files.