This is an in-browser, client-side-only IDE for web-based experiments/projects.
It is part of the MALFUNCTION website,
home for new web experiments (2025-) by Lingdong Huang,
after the departure of Glitch.
You can use this editor to write, preview, remix, share your own projects too!
Here's how:
Quick Start
To try out the editor, you can directly start typing in the central code panel and click the
"▶" button to run/preview. You can add/upload/delete/open files from the left sidebar.
"[▶]" button opens preview in a new tab.
Saving Your Project
First, you need to have your own GitHub repo where your project(s) (will) live.
The editor can work with existing projects you have in there, or create new project folders for you.
Each project should/will be a top-level folder in the repo.
You also need to have a GitHub access token.
You can genreate one specifically for your repo by going to
https://github.com/settings/personal-access-tokens/new
and selecting your repo. A general token will also work if you already have one.
Type in your username/repo/folder in the upper-left navigator, and paste your access token.
The editor is client-side only and does not send it to or store it on any servers. (source code).
Click the "Pull" button if you're working on an existing project, or the "Push" button to create a new project.
To save your changes, click the "Push" button.
Sharing
You can copy and share the URL in your address bar, once you've opened/created a project.
People do not need a GitHub access token to view/fiddle with/run the project.
This only works if your projects repo is public though.
To actually host the projects yourself at your own url (instead of in this editor preview),
you can simply enable GitHub Pages for your repo.
Known Limitations
Since the editor is client-side only, the preview feature patches functions such as "fetch()"
and detects linked scripts/assets with patterns such as
"src=", "href=" and replaces them with blobs.
If your URL is programmatically generated or stored in a variable and fetched without "fetch()"
you need to help the detector a bit by prefixing it
with the magical comment /*__URL__*/, e.g.
let link = /*__URL__*/"link/to/file.txt";
The editor is currently experimental. It is recommanded to backup important code elsewhere.
Why You Might Want to Try It Out Anyways
You "own" your own projects. You can ditch this editor any time and use another.
You do not need to create a separate account.
Tight integration with GitHub. Your projects are automatically git version controlled.
You can use GitHub Issues, CI, Pages, etc.