Glitch

From Archiveteam
Revision as of 21:12, 4 July 2025 by Nintendofan885 (talk | contribs) (in progress)
Jump to navigation Jump to search

Glitch is a website where users can create web applications (projects) and share them.

It supports static, as well as dynamic websites though 11ty or NodeJS - the latter are only online for limited amounts of time every month.

Discovery

Users and projects can be enumerated using the API. Request these two URLs and continuously fetch the nextPage field of the resulting JSON. Python scripts for that are available[1] [2]. Enumeration API call lists are available[3] [4] and were run in ArchiveBot. Enumerated user data available for avatarThumbnailUrl avatarUrl login and projects domain gitRepoUrl redirectUrl. ArchiveBot !ao < jobs were run for the gitRepoUrl and redirectUrls lists.

https://api.glitch.com/v1/users/?limit=1000
https://api.glitch.com/v1/projects/?limit=1000

Archiving

Basic information about a user or project are on https://glitch.com/@user and https://glitch.com/~project, which use JavaScript, but might be archivable by hard-coding the behaviour of the page JS in a DPoS script.

Projects can be made private with Glitch Pro. They're still accessible on their subdomain, but getting metadata and source code is disabled.

Project web servers

Each project has its web server ran on a subdomain of glitch.me, thus until July 8th 2025 it'll be possible to access the user-facing part there. JavaScript usage in these projects varies heavily. Some projects may be on custom domains. After the deadline, accounts will still be able to download their projects "through the end of 2025".

Glitch is able to host both static and server-side projects. Server-side ones can "fall asleep" (be stopped) after five minutes of inactivity if its owner doesn't pay for Glitch Pro. When accessing a sleeping project's web server, Glitch will attempt to "wake up" (restart) the project. If your user agent contains Mozilla and your Accept header accepts text/html, Glitch will serve you a placeholder page telling you this, which should not be archived. If one of those headers are missing, Glitch instead waits for the app and lets it handle the response, as if it was just lagging. An example of a sleeping app can be seen at deliberately-broken-app.glitch.me (which will never wake up).

Project git repositories

For public projects, their git repository can usually be cloned anonymously with the URL format https://api.glitch.com/git/PROJECT-SLUG, replacing PROJECT-SLUG with the actual project slug, e.g. PROJECT-SLUG.glitch.me or glitch.com/~PROJECT-SLUG. However, the git repository may not be accessible for projects using outdated versions of Node, or suspended users.

The git repositories do not include any uploaded "assets", nor databases or other data (typically stored under .data/), nor the .env file, among other things. They usually include a .glitch-assets file, which is a JSONL file enumerating assets uploaded to the Assets tab of that project (or a project's ancestor). The url and thumbnail properties of each object link to the CDN servers, which are usually on the domains cdn.glitch.global, cdn.glitch.me or cdn.hyperdev.com for older projects. Only the latest version of the file needs processing, because file deletions just add a new item for the uuid with deleted set to true, and the old URL is still present and still works. The CDN assets will be available for longer.

Project types

The project type can be checked in advance to try to avoid scraping too many server-side apps at a time, but it can be incorrect. To check it, access https://api.glitch.com/projects/PROJECT-SLUG. appType will be static if the project was using static hosting.

Many projects are made using templates, which will have the correct type. Glitch is also able to re-evaluate the type (in case a server-side app goes static or vice versa) but it's done when the project's web server is accessed.

As an example of an edge case, when creating a project by importing from your own Git repository, its metadata starts as a static project even if it has server-related files. Glitch will notice these on re-evaluation and spin up a server for the app.

Archives

Mascot

Glitch archiving mascot.png