mote
FeaturesPricingDocsDownload
Get mote
Benchmarks · pre-release build · measured 2026-09-02 and 2026-09-03

Numbers we can show you how to reproduce.

Three claims appear on the front page. This is how each is measured, on what hardware, and how three other editors do on the same machine with the same document. The harness ships with the beta.

0
idle frames / 10 s
9.7 ms
keystroke to pixel, p95
211 ms
cold start, 100 KB file

Environment

Every figure on this page comes from one machine: the laptop the app is developed on, an ordinary integrated-graphics configuration. The macOS and Windows builds are in development; their rows appear here when they exist.

MachineOSDisplayNotes
Laptop, Intel i5-11300H, 23 GB, Iris Xe (Mesa 25.2)Ubuntu 24.04, GNOME on X112560×1440 @ 60 HzRelease build, commit 04cf7dc

Test document: tools/perf/fixtures/doc100k.md (100 KB, 874 lines) · 3 runs, median · pointer parked outside the window · real session bus.

Idle frames

Claim: when nothing happens, mote draws nothing. With the document open in Live view, the editor unfocused (so the caret does not blink), and no input for 10 seconds (t = 5–15 s after launch), we count the editor's own snapshots: every time GTK asks the editor to draw.

PlatformFrames in 10 sCPU, avgMethod
Linux00.0%Editor snapshot count via tools/perf/gate.sh

With the caret blink enabled (the default while the window has focus), the count is one editor redraw per blink — only the caret changes — and it stops the moment focus leaves the window. That blink is the one timer the app is allowed to keep; there is no other repeating source while idle.

Input latency

Claim: 9.7 ms from keystroke to pixel, at the 95th percentile. Keystroke → processed: p95 0.29 ms. Keystroke → pixel (includes vsync): p95 9.7 ms. Measured in-process by tools/perf/typing.sh, 100 KB document, Live view.

Processed means the input event has updated the document and invalidated the layouts it touched; pixel means the end of the next snapshot, which waits for the frame clock and is therefore bounded below by vsync (16.7 ms at 60 Hz). Over 300 keystrokes the two distributions were p50 0.01 / p95 0.29 / max 0.48 ms and p50 2.6 / p95 9.7 / max 12.7 ms, measured 2026-09-02 on the M3 build, an earlier commit than the gate run below; the typing run is not yet in the results directory, so re-run it before trusting it. The display's own response is not included; we have not measured it.

Cold start

Claim: 211 ms from launch to the window, with a 100 KB file open. Cold means a fresh process with the file opened at launch; nothing is pre-warmed and the page cache is left alone. The clock starts at exec and stops when the window is mapped; first paint is the same clock stopped at the editor's first snapshot of the document.

Platformexec → windowFirst paintBinary sizeRSS (PSS) after load
Linux211 ms231 ms3.1 MB69 MB

Method: tools/perf/gate.sh, cold = fresh process, 100 KB file open at launch. PSS is read from /proc fifteen seconds in, once the document is laid out and the app has gone idle.

Same machine, same document

Typora, Obsidian and MarkText, each opened on the same 100 KB document in its inline-editing view (Typora's WYSIWYG, Obsidian's Live Preview, MarkText), on the machine above, by the same script. Memory is the PSS of the whole process tree twelve seconds after launch; idle CPU is the tree's CPU over seconds 5–10 with the window focused and no input; typing CPU is the tree's CPU while about 150 characters are typed at one every 30 ms. Seven runs per editor, mean, after one discarded warm-up run.

EditorVersionPSSIdle CPUTyping CPUProcesses
motepre-release, commit b17c3bf78 MB0.0%10.9%1
Typora1.14.9453 MB0.1%102.6%8
Obsidian1.12.7361 MB0.8%152.5%7
MarkText0.19.1416 MB0.6%135.8%6

Typora's idle CPU is as low as ours — we say so. Chromium throttles when it is genuinely idle, so the idle column separates mote from Obsidian and MarkText, not from Typora. Memory and typing cost are where the engines part: one process against six to eight, and a tenth of the CPU per keystroke. The 78 MB here is higher than the 69 MB above because it is a whole-process-tree figure from a different session; the GTK and Mesa floor drifts by a dozen megabytes between sessions.

MarkText ran with --no-sandbox (its sandbox does not start on this kernel); Obsidian ran in a fresh vault with only three core plugins. Raw data: experiments/2026-09-03-apps-idle-startup/raw.csv.

Reproduce it

The harness, corpus, raw CSVs and result JSON will be published with the beta in a public bench repository on GitHub. tools/perf/gate.sh <binary> :1 3 runs the gate; tools/perf/bench-apps.sh the comparison. If your numbers differ from ours by more than 15 %, tell us; we publish the discrepancy.

Last run: gate 2026-09-03 against commit 04cf7dc, comparison against b17c3bf; typing latency 2026-09-02 on the M3 build. Re-run on every release.

mote
Always open. Barely running.
© 2026 mote
We use Google Analytics to see which pages help. Load it?