Skip to content

Welcome to static.md

Write together. Share instantly.

What is this?

static.md is a real-time collaborative markdown editor with free image hosting. Create notes, share them with a link, and collaborate in real-time.

Features

Rich Markdown

You can write in bold, italic, strikethrough, and inline code.

Task Lists

Code Highlighting

Supports 100+ languages with syntax highlighting. Add = after the language name to enable line numbers (=5 starts at line 5).

TypeScript — where any is the forbidden keyword:

type Mood = 'caffeinated' | 'debugging' | 'shipping it'
function standup(mood: Mood): string {
  return mood === 'shipping it' ? 'LGTM 🚀' : "I'll need another coffee"
}

Python — batteries, snakes, and existential dread included:

def is_bug(code: str) -> bool:
    """It's not a bug, it's an undocumented feature."""
    return "TODO" in code or "works on my machine" in code.lower()

Rust — the borrow checker loves you (tough love):

fn main() {
    let happiness = String::from("compiles");
    let _stolen = happiness;
    // println!("{}", happiness); // error[E0382]: borrow of moved value 😭
    println!("fought the borrow checker, the borrow checker won");
}

Go — if err != nil, therefore I am:

package main

import "fmt"

func main() {
    coffee, err := brew()
    if err != nil {
        fmt.Println("monday:", err)
        return
    }
    fmt.Println("productivity unlocked:", coffee)
}

JavaScript — where [] + {} !== {} + [] and we just accept it:

const isEven = n => n % 2 === 0
console.log(isEven(2))          // true
console.log(isEven("2"))        // true, JS says "close enough"
console.log(isEven([]))         // true. don't ask.

Ruby — reads like English, runs like poetry:

5.times { puts "I will not push to main on Friday" }
deploy_on_friday = -> { raise "are you sure?" unless ENV['YOLO'] }
deploy_on_friday.call

Bash — works perfectly until it doesn’t:

#!/usr/bin/env bash
set -euo pipefail
rm -rf "${PROJECT_DIR}/node_modules" # the universal fix
echo "have you tried turning it off and on again?"

SQL — DROP TABLE jokes; – students

SELECT name, COUNT(*) as bugs_filed
FROM developers
WHERE coffee_level < 0.2
GROUP BY name
ORDER BY bugs_filed DESC
LIMIT 1; -- the prime suspect

Haskell — a monad is just a monoid in the category of endofunctors, what’s the problem:

factorial :: Integer -> Integer
factorial 0 = 1
factorial n = n * factorial (n - 1)
-- stack overflow sold separately

C++ — zero-cost abstractions, infinite-cost compile errors:

#include <iostream>
#include <memory>

template <typename T>
auto summon(T&& thing) -> std::unique_ptr<T> {
    return std::make_unique<T>(std::forward<T>(thing));
}

int main() {
    auto segfault = summon(std::string{"hello"});
    std::cout << *segfault << " 🪦\n"; // RAII: the only therapy that compiles
}

Markdown — yes, we’re a markdown site writing markdown inside markdown:

# How to write a blog post

1. Stare at blinking cursor
2. Write **bold** claims you can't back up
3. Add a `code block` to look smart
4. Ship it before you change your mind

> "Real artists ship." — Steve Jobs, probably on a deadline

- [x] Procrastinate
- [x] Panic
- [ ] Publish

Lisp — ((((((parentheses) are) a) lifestyle) choice))

(defun enlightenment (n)
  (if (<= n 1)
      'achieved
      (enlightenment (- n 1))))
(enlightenment 42)

Ligatures

The editor uses JetBrains Mono, which renders programming ligatures — multi-character sequences get drawn as a single glyph:

const arrow = () => 42          // =‌> renders as a fat arrow
const pointer = x -> x + 1      // -‌> renders as a thin arrow
const notEqual = a !== b        // !‌=‌= renders as a crossed equals
const lessEq = a <= b           // <‌= and >‌= fuse together
const pipe = data |> transform  // |‌> renders as a pipe arrow
const spread = [...xs, ...ys]   // .‌.‌. renders as a real ellipsis
const compare = a <=> b         // <‌=‌> renders as a spaceship
const www = "https://static.md" // :‌/‌/ stays crisp

Tables

Feature Status Description
Editor ✓ CodeMirror 6 with markdown support
Preview ✓ Live rendered markdown
Split view ✓ Side-by-side edit + preview
Collaboration ✓ Real-time with cursor sync
Image upload ✓ Drag, drop, or paste

Mermaid Diagrams

Loading diagram…

Whiteboards

Embed a live collaborative whiteboard by boardId — edits to the board show up in every note that references it.

Blockquotes

“The best writing tool is the one that gets out of your way.”

— Every developer, probably

Links & Images

Drop images anywhere in the editor, or paste from clipboard. They’re uploaded to static.md and embedded automatically.

Image Demo


Ready to start? Create your first note at static.md/notes