FLAC
Generated by scripts/gen-format-pages.py from docs/data/format-metadata/, FILE_FORMATS.csv and docs/formats-master.csv. Do not edit by hand: change the source, then run the script.
Symphonia Audio Decode.
At a glance
| Original creator | Josh Coalson; the Xiph.Org Foundation since 2003 |
| First published | 2000 |
| Purpose | Lossless compression of PCM audio: the decoded audio is bit-for-bit identical to what went into the encoder. |
| Extensions | .m4a, .flac, .oga, .ogg, .opus, .spx, .alac, .wavpack, .tak, .aif, .aiff, .wma, .wmapro, .asf, .atrac, .at3, .m4b |
| Poka parser | poka-symphonia |
| Viewer | none: the parser draws its own preview |
| Depth tier | Standalone parser (see Depth tiers) |
| Breadth tier | B5 Identification (see Breadth tiers) |
How much Poka reads
B5 Identification. The format is recognised and a few properties are shown (name, size, version string). Nothing of the content is decoded.
Confidence: high (the reviewer read the code and a test that proves the claim). Basis: Reviewed 2026-10-16: .flac is an alias of poka-symphonia (parsers/poka-symphonia/plugin.json); preview_bytes returns a POKA_MEDIA|audio marker for the extension without opening the bytes, and its unit test passes the bytes 'anything'. The desktop (preview.js mediaPlayer) and web (app.js renderMedia) apps play the original file in an audio element; web/tests/audio.spec.js plays no-tags.flac. Corpus has about a dozen .flac files but no test reads their structure. Judgement: tiered as B5 because Poka reads nothing of the stream itself; the browser's decoder does the playing, and an argument for B4 or B3 could be made on delegated playback. Covers RFC 9639 FLAC files as a whole.
What Poka does not read
- STREAMINFO (sample rate, channels, bit depth, total samples, duration) is not read or shown
- Vorbis comment tags (title, artist, album) are not shown
- embedded cover art (PICTURE block) is not shown
- seek table, cue sheet and application blocks are not read
- no validation that the file is FLAC (the fLaC magic is never checked)
- files the browser cannot play show only a generic unsupported note
Background
The Library of Congress says Coalson invented FLAC in 2000 and led it until 2013, that versions 0.3 (18 December 2000) to 1.2.1 were hosted on SourceForge, and that the project joined Xiph.Org on 29 January 2003. The format is now standardised as IETF RFC 9639 (December 2024). Each frame carries a CRC and the stream an MD5 signature of the original audio. Poka does not decode FLAC itself: the module hands the original file to the frontend, which plays it in the browser's audio element, without checking the file first.
Versions
| Version | Identifier | Poka | Note |
|---|---|---|---|
| FLAC (RFC 9639) | fLaC |
Not recorded | Played by the browser, so what plays depends on the browser; the module does not check the version. |
Derived and related formats
- Ogg FLAC (
.oga): FLAC in an Ogg container; the Library of Congress describes it separately (fdd000227).
Libraries
Libraries Poka uses or has assessed for this format, with the status, licence and language the registry records.
- symphonia (used; MPL-2.0; Rust)
- Claxon (candidate; Apache-2.0; Rust; https://github.com/ruuda/claxon) — Pure Rust FLAC decoder, fuzzed and checked against libFLAC; decode only.
Sources
- https://loc.gov/preservation/digital/formats/fdd/fdd000657.shtml
- https://www.rfc-editor.org/rfc/rfc9639
- parsers/poka-symphonia/src/main.rs