Skip to content

Image Uploads

Persistent rooms

Images uploaded in persistent rooms are written to data/uploads/ with a random hex filename. They are served at /uploads/<filename> and referenced in messages as a normal URL.

Supported formats: PNG, JPEG, GIF, WebP.

Ephemeral and incognito rooms

Images in in-memory rooms never touch disk. On upload, the server reads the file into a Buffer, encodes it as a base64 data-URL, and returns it to the client. The client embeds the data-URL directly in the message. No file is written anywhere.

This keeps the privacy guarantee intact but means every image byte lives in the Node heap. The max_mem_room_bytes cap limits total heap per room.

Disabling uploads

Set allow_image_uploads = false in config.toml to disable the upload endpoint entirely. The image button disappears from the composer. Recommended on public demos.

Size limit

Controlled by caps.max_image_bytes (default: 2 MB). Requests exceeding this limit receive a 413 response before any bytes are buffered into heap.

Released under the Apache-2.0 License.