For years, installing software on Linux meant fighting broken dependencies, stale repositories and .deb or .rpm packages that only worked on one specific distribution. Universal packaging formats came along to break exactly that barrier: ship an application that behaves the same on Ubuntu, Fedora or any other distro, no matter what libraries already sit on the host. Three main contenders share the stage today: Flatpak, Snap and AppImage. Each solves the problem its own way, and knowing the differences will save you plenty of headaches.
The problem they set out to solve
Linux never lacked software. What it had too much of was fragmentation. An app compiled for one release of Debian might refuse to launch on another because a single library carried a different version number. Universal formats tackle this at the root. They bundle the application together with its dependencies, so the package is self-contained and no longer leans on the distribution’s native package manager. The obvious trade-off is size, since every package drags a good chunk of its own runtime along.
Flatpak: the desktop standard
Flatpak is community-driven, strongly backed by Red Hat, and has become the most recommended format for the desktop. Its reference store is Flathub, which verifies applications, accepts them through pull-request review on GitHub, and shows verification badges when the original developers publish the software themselves.
Under the hood, Flatpak uses OSTree to distribute and deploy data: installed applications and runtimes alike are OSTree checkouts. Those shared runtimes (Freedesktop, GNOME and KDE) avoid duplicating common libraries across apps and enable delta updates that download only the changed blocks, typically just a few megabytes per update.
On security, Flatpak is the strongest of the three. Every application runs inside a sandbox created with Bubblewrap, leaning on kernel technologies such as namespaces, cgroups, bind mounts and seccomp. Access to system resources or your personal data is granted through XDG Portals or explicit static permissions. If you run a desktop-focused distro like Linux Mint or Pop!_OS, Flatpak is usually the smoothest choice.
Snap: Canonical’s bet and its controversy
Snap is the format developed by Canonical, the company behind Ubuntu, and it ships preinstalled there through the snapd daemon. On paper it offers appealing things: application confinement, a centralized store with automatic malware scanning, and support for desktop apps, server services and IoT devices alike.
Its lingering problem is the closed backend. While snapd is open source, the Snap Store —the central repository every snap is distributed from— is proprietary and controlled exclusively by Canonical. You cannot stand up your own independent store or federate with the official one, which clashes head-on with the decentralized philosophy of the rest of the ecosystem. Then there’s the technical experience, widely criticized: snaps pull a full SquashFS image on every update (often tens to hundreds of megabytes), and the first launch after a reboot tends to drag because the image has to be decompressed and confinement applied.
The community reaction has been loud: distributions like Linux Mint disable Snap by default. Even so, across the Ubuntu world and its derivatives such as Lubuntu or Xubuntu, it stays very present.
AppImage: one file and go
AppImage takes the most minimalist approach of the three: no installation, no background daemon, no store. An AppImage application is a single executable file that holds the app and all its dependencies. You grant it execute permission, double-click, and it runs.
When you launch an AppImage, it mounts itself using FUSE (Filesystem in Userspace) and runs the application from that temporary mount point. It is fully portable: move it between folders or carry it on a USB stick and nothing changes, and to uninstall it you just delete the file, because nothing was ever copied into system directories. Its Achilles’ heel is security. AppImage supports sandboxing, but it’s optional and needs extra tools like Firejail or AppArmor. It also doesn’t handle automatic updates natively. For lightweight distros or systems like Alpine Linux or antiX, where you want total control and a minimal footprint, it fits nicely.
Size, sandbox and dependencies: the practical summary
Look at the three key axes and the picture clears up. On dependencies, all three are self-contained, though Flatpak gains efficiency by sharing runtimes across applications, while Snap and AppImage tend to duplicate more. On size and updates, Flatpak is the most efficient thanks to OSTree delta updates, Snap the heaviest because of its full images, and AppImage depends entirely on the packager. On sandboxing, Flatpak isolates by default, Snap supports it but it isn’t always mandatory, and AppImage leaves it as an optional task for the user.
So which one should I choose?
There’s no absolute winner, just the right tool for each case. For a modern desktop with strong security and efficient updates, Flatpak is today’s most widely recommended choice. If you live inside the Ubuntu world and don’t mind its centralized model, Snap works fine. And if you just want to try a one-off tool without installing anything or leaving a trace —ideal on a live USB or a security-focused distro like Tails—, AppImage wins on sheer simplicity. The best part is that they aren’t mutually exclusive: on most distros you can run all three side by side and pick whichever suits each application.
