Frequently asked questions

Is Domainless Code free?

Writing, running, the live preview, the security scan, importing files and Export (a ZIP of every file and folder) are free, with no account needed. Saving projects on our server is Cloud Save: $0.99 a month, or included with every Domainless Membership.

What can I build with it?

Anything HTML, CSS and JavaScript can do. A project is a folder of files — pages, stylesheets, scripts, images, data files and sub-folders — and they work together when it runs: links between pages, imports between JavaScript modules, and fetch() of your own files. TypeScript, JSX, SCSS, Sass, Less and Markdown work as well, and there's a console and a security scan.

Can I use TypeScript, React, SCSS or Markdown?

Yes. Load .ts, .tsx or .jsx files from your page (<script type="module" src="main.tsx">) and import between them as you would with a bundler: ./App finds App.tsx. JSX uses React 19, which you import by name (react, react-dom/client) with nothing to install; for Preact, start a file with /** @jsxImportSource preact */. Link .scss, .sass or .less stylesheets directly, partials and imports included. A project that's only Markdown opens its README.md as a page. Markdown pages can show math ($x^2$ in a line, $$…$$ on lines of their own, drawn by KaTeX) and diagrams (```mermaid blocks, drawn by Mermaid). Everything is compiled in your browser when the project runs, by TypeScript 6, Dart Sass, Less and marked. TypeScript is compiled but not type-checked, and a compile error shows the file and line.

Can I use Vue or Svelte?

Yes. Import a .vue single-file component or a .svelte component from your page's script (import App from './App.vue') and it compiles when the project runs, in your browser, with Vue 3.5 and Svelte 5 served by Domainless itself: nothing to install, no build step. Vue's <script setup>, scoped styles and lang="ts" work, and so do templates written in a page's HTML; Svelte 5 runs with runes or Svelte 4 syntax, and .svelte.js modules too. Component styles can be CSS, SCSS, Sass or Less. Templates has a ready-made counter for each, and a compile error shows the file and line.

Can I write C or C++?

Yes. Choose C or C++ under New, or open a project whose start file is main.c or main.cpp. When you press Run, the source files go to our own compile server, a FreeBSD machine in Colorado, USA, where clang 22 compiles them to WebAssembly inside a locked, throwaway container with no network. The program then runs in your browser, in the terminal, where it reads what you type. Our servers never run your program. Compiling is free: 20 compiles an hour for visitors, 60 when you are signed in and 300 for members, and running code you have already compiled doesn't count. Your source files are deleted from the compile server when the compile ends; the compiled program is kept for up to 7 days so the next run is instant. Threads, networking and graphics aren't available yet, and C++ exceptions are off for now.

Can I write COBOL?

Yes. Choose COBOL under New, or open a project whose start file is main.cob (or .cbl). When you press Run, your programs and copybooks (.cpy) go to our own compile server in Colorado, USA, where GnuCOBOL 3.2 translates them to C and clang 22 compiles that to WebAssembly, in a locked, throwaway container with no network. The program then runs in your browser, in the terminal, where ACCEPT reads what you type; our servers never run it. Every .cob file in the project is linked into the one program and CALL finds them by name; COPY finds copybooks in any folder. Code is in fixed format (columns 8 to 72) unless a program starts with >>SOURCE FORMAT IS FREE. Your files are deleted from the compile server when the compile ends; the compiled program is kept for up to 7 days, and the same hourly compile limits as C apply. Not available: indexed (ISAM) files, the SCREEN SECTION, CALL "SYSTEM" and anything else that starts another program, and calling a program with a different number of parameters than it declares. GnuCOBOL's run-time library and GMP are inside every program under the LGPL-3.0: their sources and build files are linked from our licences page.

Can I write Rust?

Yes. Choose Rust under New, or open a project whose start file is src/main.rs (or any .rs file). When you press Run, your .rs files, Cargo.toml and the data files your code can include (.txt, .json, .csv, .md, .dat) go to our own compile server in Colorado, USA, where rustc 1.99 compiles them to WebAssembly, in a locked, throwaway container with no network. The program then runs in your browser, in the terminal, where read_line reads what you type and std::fs reads your project's files; our servers never run it. Modules work as with cargo: mod garden; finds garden.rs or garden/mod.rs, and a package with src/lib.rs builds it as a library that src/main.rs uses by the package's name. Cargo.toml sets the edition (2015, 2018, 2021 or 2024; without one, 2015, as cargo does); with no Cargo.toml it's 2024. Programs are built the way cargo run builds them, with integer overflow and debug_assert! checked, but optimised, so they run fast. Your files are deleted from the compile server when the compile ends; the compiled program is kept for up to 7 days, and the same hourly compile limits as C apply. Not available: crates from crates.io (only the standard library), build scripts and procedural macros, threads, networking and starting other programs; a panic stops the program with its message but without a backtrace. Rust's standard library is inside every program, under the MIT or Apache 2.0 licence: the texts are linked from our licences page.

Can I write Go?

Yes. Choose Go under New, or open a project whose start file is main.go (or any .go file). When you press Run, your .go files, go.mod and the data files your program can embed or read (.txt, .json, .csv, .md, .dat) go to our own compile server in Colorado, USA, where Go 1.27 compiles them to WebAssembly, in a locked, throwaway container with no network. The program then runs in your browser, in the terminal, where bufio and fmt.Scan read what you type and os.ReadFile reads your project's files; our servers never run it. Goroutines and channels work: they take turns on one thread, so they run concurrently but not in parallel. Packages work as with the go command: go.mod names your module, and a folder of your own, say plants/, is imported as garden/plants; without a go.mod, a one-folder program builds as module main. Each compiled program is about 2.5 MB, because it carries Go's runtime. Your files are deleted from the compile server when the compile ends; the compiled program is kept for up to 7 days, and the same hourly compile limits as C apply. Not available: modules from outside the standard library (no go get), cgo, networking and starting other programs; a panic stops the program with its message and where it happened. Go's runtime and standard library are inside every program, under Go's BSD licence: the text is linked from our licences page.

Can I write Dart?

Yes. Choose Dart under New, or open a project whose start file is bin/main.dart or main.dart (or any .dart file). When you press Run, your .dart files and pubspec.yaml go to our own compile server in Colorado, USA, where the Dart SDK 3.13 compiles them to JavaScript (dart2js), in a locked, throwaway container with no network. The program then runs in your browser, in the terminal; our servers never run it. dart:io works for what a browser can do: stdin.readLineSync() (or stdin as a stream) reads what you type, stdout, stderr, exit and exitCode work, File and Directory read and write your project's files (what a program writes lasts until it ends), and Platform says it's a browser. async/await, Futures, Streams and Timers run as they do in the Dart VM, and Dart 3's records, patterns and sealed classes work. Packages work as with dart run: pubspec.yaml names your package, so lib/ is imported as package:garden/…. Asserts are on. Because the program is JavaScript, numbers work as they do on the web: an int is exact up to 253 (use BigInt beyond it), and a whole double prints without .0. An uncaught error stops the program and shows Dart's message and the lines of your code it came from. Your files are deleted from the compile server when the compile ends; the compiled program is kept for up to 7 days, and the same hourly compile limits as C apply. Not available: packages from pub.dev, Flutter, dart:html (Dart for web pages), dart:ffi, isolates, deferred imports, processes, sockets and HTTP. Dart's core libraries are inside every program, under the Dart SDK's BSD licence: the text is linked from our licences page.

Can I write Java?

Yes. Choose Java under New, or open a project whose start file is Main.java (or any .java file with a main method). When you press Run, your .java files go to our own compile server in Colorado, USA, where OpenJDK 25's javac compiles them and TeaVM turns them into JavaScript, in a locked, throwaway container with no network. The program then runs in your browser, in the terminal; our servers never run it. It's Java 25: records, sealed interfaces, pattern matching and switch expressions, text blocks, var, and void main() on its own all work, and a project in folders works as with java Main.java: the start file's folder and the packages it uses (a test tree such as src/test/java isn't compiled). A Scanner on System.in (or IO.readln, or a BufferedReader) reads what you type, System.out and System.err print, System.exit sets the exit code, and java.io and java.nio.file read and write your project's files (what a program writes lasts until it ends). Threads, virtual threads, executors, CompletableFuture, locks and synchronized work, the threads taking turns. Most of java.lang, java.util (collections, streams, Scanner, Formatter), java.math, java.time, java.text and java.util.regex is there, made to behave as Java's own: HashMap and HashSet keep Java's order, Random gives Java's numbers, and floats, doubles and their printing come out as on the JVM. Assertions are off, as java runs them; dates use your browser's clock and time zone. An uncaught exception stops the program and shows Java's message and stack trace, with the lines of your code it came from; a NullPointerException in your code says which value was null, as Java's does. Your files are deleted from the compile server when the compile ends; the compiled program is kept for up to 7 days, and the same hourly compile limits as C apply. Not available: libraries from outside Java's own (Maven's), Swing, AWT and JavaFX (windows need a desktop), most of reflection, JDBC, sockets and HTTP, processes, and Java's modules. A few things differ from the JVM: Math's sin, cos, tan, tanh, exp, log, log10, pow and cbrt can differ in the last digit (Java allows that between machines; StrictMath's match Java's to the last digit); regular expressions can't yet use \X, \N{...}, Unicode scripts and properties such as \p{IsGreek} and \p{IsAlphabetic}, or UNICODE_CHARACTER_CLASS (a pattern that does says so), and a few unusual patterns, such as a look-behind with a quantifier on it, can match differently or not compile; and a few rare messages and library class names aren't Java's. TeaVM's Java library is inside every program, under the Apache License 2.0: the text is linked from our licences page.

Can I write Lua?

Yes, two ways. Choose Lua 5.5 under New for a program that runs in the terminal: the real Lua 5.5.1, built for WebAssembly, runs right in your browser (about 0.3 MB the first time). io.read reads what you type, require finds your project's own modules (scores.lua next to main.lua), and io.open reads your project's files; an error shows Lua's message and where it happened. Not available there: os.execute and io.popen (there is no shell), temporary files, and modules written in C. Or choose Lua page sketch for Lua that draws on the page, with Fengari (Lua 5.3). Lua is under the MIT licence.

Can I write AssemblyScript?

Yes. Choose AssemblyScript under New: TypeScript-like code with WebAssembly's own number types (i32, i64, f64 …), compiled to WebAssembly by the AssemblyScript 0.28 compiler right in your browser (about 2.7 MB the first time), then run in the terminal. A project is AssemblyScript when it has an asconfig.json; it starts at assembly/index.ts (or the first of asconfig's entries) and imports its own modules. console.log and process.stdout print, process.stdin reads what you type (the starter's input.ts has a readLine), and Date and Math.random work. It is compiled with -O3 and AssemblyScript's WASI shim; other asconfig options aren't used yet. AssemblyScript is under the Apache-2.0 licence.

Can I write Common Lisp?

Yes. Choose Common Lisp under New: the real ECL 26.5 (Embeddable Common Lisp), built for WebAssembly, runs your program right in your browser (about 1.4 MB the first time). Your start file (main.lisp) is loaded the way ecl --shell main.lisp runs a file in its folder: LOAD finds the files beside it, READ-LINE and READ read what you type in the terminal, and an error shows ECL's message and stops the program. Recursion goes a few hundred calls deep (about 300 in Firefox, about 1,000 in some other browsers): a browser gives a page's programs far less stack than a desktop Lisp, while LOOP, DOLIST, DO and the sequence functions have no such limit. It's full ANSI Common Lisp: CLOS, conditions and restarts, LOOP and FORMAT, exact big numbers and fractions. Code runs on ECL's bytecode compiler (there's no C compiler in the browser); networking, ASDF and Quicklisp aren't available yet. ECL is under the GNU LGPL; its complete source and our build kit are at /code/vendor/ecl/.

Can I write shaders?

Yes. Choose Shader (GLSL) under New. Your image.glsl runs on your graphics card with WebGL 2, the way Shadertoy runs an Image shader: write mainImage(out vec4 fragColor, in vec2 fragCoord) and use iResolution, iTime, iTimeDelta, iFrame, iFrameRate, iMouse (hold the button down and drag) and iDate; it redraws every frame. A file that starts with #version 300 es is a whole fragment shader of your own and runs as written. Compile errors show with your file's line numbers. Not available yet: Shadertoy's textures and extra buffers (iChannel0–3), and WGSL shaders for WebGPU.

Can I write R?

Yes. Choose R under New, or open a project whose start file is main.R (or any .R file). R 4.6 runs right in your browser, through webR: nothing is sent anywhere to run. The first R run loads about 13 MB, which your browser keeps for next time. Your script runs the way Rscript runs it: each top-level result is printed, and plots appear in the terminal as pictures. readline(), readLines(file("stdin")) and scan() read what you type, and your project's files are there for read.csv() and anything else that reads files. R's built-in packages work (base, stats, graphics, grDevices, utils, methods, grid, splines, stats4, tools and parallel); packages from CRAN, like ggplot2 or dplyr, aren't available yet. R is under the GNU GPL: its complete source code is linked from our licences page.

Can I upload my own files or a whole folder?

Yes. In the editor's Files panel you can add files and folders, upload files or a whole folder, drag them in, or open a ZIP as a project. Export gives everything back as a ZIP, folders included. A project can hold up to 300 files and 25 MB.

Can I write Python, SQL or other languages?

Yes. Pick a project type in the editor: Python runs in your browser with MicroPython 1.29, a compact Python 3 that starts instantly — your project can have several files and folders, and input() works in the terminal in the preview. When a program needs more of Python, Run with full Python runs it on CPython 3.14, with numpy, pandas and matplotlib, whose charts appear right in the terminal; PHP 8.4 runs your pages the way a PHP server does (forms, links with query strings, include and redirects work); Ruby 3.4 runs with its standard library, and gets reads what you type; R 4.6 runs your scripts with R's built-in packages, plots included; SQL runs on SQLite 3.49: every query's rows print as a table, and .import loads a CSV file from your project as a table; PostgreSQL 18.3 runs your script the way psql does, with a fresh database every run and psql's backslash commands (\d, \copy and more); Prolog runs on SWI-Prolog 10: your file loads, then you ask it questions at the ?- prompt in the terminal; Scheme runs on Chibi-Scheme 0.12 (R7RS), with exact big numbers and fractions, call/cc and your own libraries; WAT (WebAssembly text) is compiled in your browser and runs with WASI, reading what you type; asm (BIOS) assembles 16-bit x86 with NASM and boots your boot sector in an in-browser emulator; C (UEFI) compiles a UEFI application with the GNU-EFI toolchain into a downloadable .efi; C, C++, COBOL, Rust and Go projects are compiled to WebAssembly on our own compile server and run in the terminal, reading what you type; Dart is compiled to JavaScript on our compile server and runs in the terminal, with dart:io's console and files; Java is compiled by OpenJDK 25's javac and TeaVM on our compile server and runs in the terminal, with Scanner, files and threads; Lua 5.5 runs in the terminal, with your own modules; AssemblyScript is compiled to WebAssembly in your browser and runs in the terminal; Common Lisp runs on ECL 26.5 in the terminal; and Lua page sketches run in your browser and render to the page. asm, C (UEFI) and Lua page sketches are single files for now.

What is Render?

Render opens the project you're editing full-page in another tab and updates as you type. It stays in your browser; nothing is sent to our server.

What's the difference between Templates, Browse and Archive?

Templates are starter projects to open in the editor. Browse shows public projects people have saved. Archive is a reference library of official documentation for 230 languages, frameworks and tools.

Can I share or embed my projects?

Yes, once a project is saved: Share gives you a link to the project, a full-page link, and an embed code for your own site. Choose public (listed in Browse), unlisted (only people with the link) or private (only you).

Can my code see my account?

No. Projects run in a sandboxed frame that can't read your sign-in or anything else on Domainless.

How do I cancel Cloud Save?

Open My Code and choose Manage or cancel Cloud Save. That opens Stripe's billing page, where you can cancel any time; saving keeps working until the end of the month you've paid for. If Cloud Save comes with your Membership, manage it from Plans.

What's in Labs?

Labs holds experiments: a WiFi exposure checker, a Baofeng radio programmer and firmware reverse-engineering tools.

What open-source software does Domainless Code use?

See Open-source software: every library and runtime we send to your browser, its licence, and where to get its source.

How do I get help or report a problem?

Email support@domainless.fun, see Contact for every way to reach us, or report a bug.