Why Audacity Moved to SQLite Project Storage

For nearly two decades, Audacity relied on a split project format consisting of a master XML file and a separate folder containing thousands of tiny audio blockfiles. With the release of version 3.0.0 in March 2021, the developers abandoned this legacy architecture in favor of a single SQLite 3 database format with the .aup3 extension. This transition was driven by the urgent need to eliminate chronic project corruption, resolve file-management human errors, improve operating system performance, and adapt to the challenges posed by modern cloud storage and backup tools.

The Problem with the Legacy Format

Prior to Audacity 3.0.0, saving an editing session produced a small .aup project file and a corresponding directory named [ProjectName]_data. This directory contained the actual audio split into hundreds or thousands of 1-megabyte binary .au files. The .aup file served purely as an XML map instructing the software on how to arrange these fragments along the timeline.

This design caused frequent project loss due to basic user error. Users frequently copied, emailed, or backed up only the .aup file while leaving the _data folder behind, or renamed one component without renaming the other. Because the project could not function without both parts matching exactly, entire recording sessions were frequently rendered unrecoverable.

Operating System Overhead and Inefficiency

Managing thousands of individual audio blocks placed severe strain on operating systems and storage hardware:

Cloud Storage and Syncing Conflicts

The multi-file structure was fundamentally incompatible with modern cloud storage solutions such as Dropbox, Google Drive, and OneDrive. As Audacity wrote and deleted temporary .au blockfiles in real time, cloud sync services attempted to upload or lock these files simultaneously. This concurrency caused file-locking errors, race conditions, partial uploads, and silent audio dropouts that corrupted active sessions.

Why SQLite Was Selected

To resolve these issues, the development team adopted SQLite 3, an embedded, zero-configuration relational database engine. Storing the entire project inside a single .aup3 container solved the structural weaknesses of the old format:

The switch to SQLite modernized Audacity’s infrastructure, transforming project management from a fragile file-linking system into a resilient, self-contained database.