Create a new file using
and send a Pull Request.
The file should contain one line with a link to the GitHub, Codeberg or GitLab repository that hosts AppImages on its Releases page.
Alternatively, a link to the download directory where new versions appear, e.g. https://download.kde.org/stable/digikam/ or an openSUSE Build Service .../AppImage/ directory (the test picks the AppImage of the newest version from its listing), or a link to the AppImage. Nothing else.
The pull request must add (or change) exactly this one file in data/ and nothing else; one application per pull request. Otherwise the test fails.
Ideally, the file in data/ contains a link to https://github.com/User/App/ (or the equivalent Codeberg or GitLab project page; not to a specific AppImage!). The test then picks the AppImage from the newest release (or, if no release has an AppImage, the newest pre-release): among its files ending in .AppImage, the one for x86_64 (other architectures such as aarch64 or i686 are left out), not a debug or nightly build, and, if the release contains AppImages of several applications, the one named like the file in data/. If it is still not clear which AppImage to test (e.g. App-qt5-x86_64.AppImage and App-qt6-x86_64.AppImage), the test fails; then put the link to the AppImage itself into the file in data/.
If the repository has a release for each channel of the application (such as esr, beta and nightly), say which one this entry is by adding it to the link with a #, e.g. https://github.com/User/App#nightly; without it, the other channels are left out. The part after the # is also how to pick one of several AppImages of a release (variants, Ubuntu versions): it is a word of the file name, or a pattern with the wildcards * (any characters) and ? (one character) that may match anywhere in the name, e.g. https://github.com/User/App#App_*ubuntu-24.04 for App_1.2_ubuntu-24.04_amd64.AppImage but not for App_tethering_1.2_ubuntu-24.04_amd64.AppImage.
If a PR changes the file in data/ to a download location of a different owner (another GitHub user or organization, or another website), it gets the manual-check-needed label and a comment: please explain in the PR why the location changed, ideally with a link where the project announces it.
Name of the file in data/ (checked by the test; new files that break these rules fail with the error-filename label):
* The name of the application, as in its desktop file, e.g. data/Krita
* No blanks; use _ instead, e.g. data/Linux_Device_Manager
* No version number, architecture or .AppImage, e.g. not data/App-1.0-x86_64.AppImage
* No "AppImage" or "Linux" unless they are part of the application's name (all AppImages are for Linux)
* Blanks in the application's name become _, also where the file name would otherwise have -: if the README writes "XI on Anything", the file is data/XI_on_Anything, not data/XI-on-Anything (the test warns about it)
* No "App" as a word (all entries are applications), e.g. data/AniWings, not data/AniWings-App or data/aniwings_app; names such as WhatsApp or Apple are fine
* No file extension such as .md or .txt
* Not an existing name in different capitalization; to update an entry, change its existing file
Standard nomenclature:
* AppImage filename consists of pieces: Application name, hyphen, version, hyphen, architecture, dot, AppImage suffix
* First piece of the AppImage filename, "App" == name of the repo
* Blanks in the app name become _
* Respect uppercase. If the app is called "App", do NOT use "app"
* Example: App-1.1-x86_64.AppImage in a repo called "App"
Then send a Pull Request to this repository. GitHub Actions will instantly perform an automated review of the AppImage and post the result as a comment in your pull request: a screenshot of your application if it succeeds, or the error (with hints on how to fix it) if it fails. Please check that the screenshot shows the main window of your application. To test your pull request again (e.g., after publishing a new release), comment /retest on it. If the test failed, it also runs again automatically when you comment that the problem is fixed (e.g., "Fixed in 1.2.3, please test again").
/retest tests again; /appstream explains how to show your own screenshot (via the AppStream metainfo file). A comment that says a fix or a new release is out ("fixed in 1.2.3", "new release", "updated") re-tests a failed pull request automatically; "will be fixed in the next release" does not.error-glibc-too-new: the test runs on the oldest Ubuntu LTS release that is still in standard support (see the Ubuntu release cycle), because an AppImage should run on older distributions too; an AppImage built on a newer system needs symbols of a newer glibc and fails there. Build on the oldest still-supported LTS release (in GitHub Actions, the oldest ubuntu-* runner still offered, or a container of that release), see the AppImage best practices, or bundle the C library together with its loader (ld-linux) in the AppImage: then the host's glibc does not matter (the test reports X-AppImage-Libc=bundled).error-app-exits.error-* names why the test failed (the comment has the hint); screenshot-ok means it passed and the screenshot looked fine; manual-check-needed means a maintainer must look (e.g. the download location moved to another owner).opt-out label and a maintainer closes it. The application is not proposed again.As a format, AppImage is designed in a way that does not impose restrictions on the person generating AppImages. Basically you are free to put inside an AppImage whatever you want. For appimage.github.io, however, additional rules apply. AppImages submitted to AppImage hub undergo automatic and possibly additional manual review.
wget. Currently we cannot get AppImages from locations behind authentication and/or cookie-protected locations. For commercial applications we recommend to have a generally downloadable demo/trial version. Please contact us if you would like to add your commercial AppImage to the directory and it is not available for general downloadld-linux-*.so.*), and use the statically linked AppImage runtime. The test detects this and the directory shows it on the page of the applicationdesktop-file-validateREADME.en.mdusr/share/metainfo. If it does, must pass appstreamcli validation(async () => {
if (await isOnline() === true) {
mainWindow.loadURL(HermesURL);
} else {
mainWindow.loadFile('offline.html')
}
mainWindow.maximize();
mainWindow.show();
})();
/remove on the issue about the entry ("Where did the AppImage of NAME go?"), or run "Remove entry" in the Actions tab with the name(s). This removes data/NAME, database/NAME/ and apps/NAME.md and closes the issue.data/ in a pull request; once it is merged, the rest of the entry is removed automatically.App stores and software centers can consume the metadata collected by this project. See AppImage ecosystem.

Currently we are providing a JSON feed at https://appimage.github.io/feed.json. If you would like to use this data but need changes, please contact us on #AppImage at irc.libera.chat, so that we can discuss an output format that would serve your needs best. PLEASE NOTE that the data output format is not finalized yet and is subject to change any time without prior notice, until we release a stable version of it.
The following projects use feed.json and the icons under database/ to build their catalogs (found via GitHub code search, October 2026):
appimage module uses the feed as its default catalog_urlPlease contact us (or send a pull request) if you are using this data so that we can list your project here.
| 日期 | 榜单 | 排名 | 周期新增 | 总 STAR |
|---|