Introduction
These are the projects saved by FL Studio 2024 and FL Studio 2025. From 2024, Image-Line names each release by its year, and the major number of the version string is the two-digit year: 24 for FL Studio 2024 (released in June 2024, with 2024.2 in November 2024) and 25 for FL Studio 2025 (released on 9 July 2025, with 25.2 on 21 November 2025). Their betas were numbered 21.2.99, 24.0.99, 24.2.99 and 25.1.99.
The file keeps the events, the UTF-16LE text and the arrangements of 500 tracks of FL Studio 21, but it changes two things that were already in the file: the size of a playlist item record, and the size rule of the event stream. So it is described here as a format of its own. These files are new and little studied, and what follows comes from open-source readers, some of whose changes are not yet merged.
Structure
The file is a 14-byte header chunk and a data chunk holding one long stream of events. What sets these files apart:
- 80-byte playlist items. Each playlist item record grows from 60 bytes to 80. The first 60 bytes keep the layout of FL Studio 21, and the 20 bytes after them are not understood. A proposed change to PyFLP (pull request 205, checked against FL Studio 2025 saves) reads them, and the flpkit reader reports 80-byte records in 17 of the demo projects that come with FL Studio. No FL Studio 2024 (24.x) file has been found to confirm the size for that release.
- Event 172. In earlier files an event’s ID always gives the size of its value. Event 172 has an ID in the four-byte range but carries fewer bytes, so a reader that follows the rule loses its place in the stream. Readers disagree on whether it carries one byte or three, and its meaning is unknown.
- Notes before the first pattern. Projects that come with FL Studio 25.2.5 can hold a pattern notes event (224) before any New pattern event. See Note records.
Playlist tracks are still stored as 499 minus the track index, as in FL Studio 20 and 21. Other fields may have changed without being noticed yet. A reader for these files should check the version, skip events it does not know by their length, and treat event 172 as a special case.
Telling it apart
The explorer’s parser for this format checks two things. The FL Studio version text
event (199) must have a major number of 24 or 25, for example 25.2.5,
or be one of the FL Studio 2024 betas from 21.2.99 on. And every
playlist items event (233) must be made of whole 80-byte records, each starting with
20480 at offset 4. A file that fails either check is turned down, and the explorer
tries the parsers for the other FLP formats.
The betas’ numbers fall inside FL Studio 21’s range, so the parser for FL Studio 21 looks at such a file first. It accepts it only if its playlist records are 60 bytes long. Otherwise the file comes to this parser.
The parser reads event 172 as one byte followed by an ordinary event, so it does not lose its place in the stream.
Variants
- FruityLoops 1 to FL Studio 5 – the 1999 layout: single-byte text, 20-byte notes and 28-byte playlist items
- FL Studio 6 to 8 – channel volume and pan on a scale 100 times larger
- FL Studio 9 to 11.4 – 24-byte note records and 32-byte playlist items
- FL Studio 11.5 to 12 – every string but the version switches to UTF-16LE
- FL Studio 20 – multiple arrangements, with tracks counted down from 499
- FL Studio 21 – 60-byte playlist items with fades and gain
- FL Studio 2024 and 2025 – 80-byte playlist items and a one-byte event 172
- FL Studio 2026 – 88-byte playlist items with clip offsets in ticks
Links
Software
- FL Studio – Image-Line’s music production software, which saves and opens these projects (Windows, macOS)
Developers
- PyFLP – library that reads and writes FLP files; its support for these files is in open pull requests (Python)
- flpkit – FLP reader that detects the newer playlist record sizes and reads event 172 as one byte (Python)
- DawVert – converter between DAW project formats, whose reading of the FL Studio 21 playlist bytes is used here (Python)
Reference
- FL Studio changelog – Image-Line’s list of what changed in each release
- PyFLP pull request 205 – the proposed change for 80-byte playlist records, not merged
- PyFLP pull request 208 – the proposed change for event 172, not merged