September 30, 2026 · 4 min read
How to upload Typora images to S3 or Cloudflare R2
Typora saves pasted images next to your Markdown file by default. That's fine until you publish the document, paste it into GitHub or send it to someone: the images stay behind on your computer. Uploading them to your own bucket as you write keeps the Markdown portable, and the links point at storage you control.
Install and connect the aktar command
Typora's custom uploader runs a command with the image paths and reads the links it prints. aktar does exactly that, using the destinations you already set up in Aktar for Mac or Windows.
brew install getaktar/tap/aktar-cli # or: npm install -g @getaktar/cli
- In Aktar, open Settings > Integrations, turn on Allow local connections and copy the token.
- Run
aktar loginin a terminal and paste it. - Check it with
aktar upload some-image.png. It should print a link.
Set aktar as Typora's image uploader
- Open Typora's settings (Typora > Settings… on a Mac, File > Preferences… on Windows) and go to Image.
- Under Image Uploader, choose Custom Command.
- Enter the command with its full path. On a Mac with Homebrew that's:
/opt/homebrew/bin/aktar upload
Run which aktar (on Windows, where aktar) to see where yours is. Typora doesn't always see your terminal's PATH, which is why the full path is safer than just aktar.
- Click Test Uploader. Typora uploads two small test images and shows the links it got back.
Upload images automatically as you paste them
In the same Image settings, set When Insert… to Upload Image. From then on, pasting or dragging an image into a document uploads it and writes the bucket link into the Markdown.
For a document that already has local images, use Format > Image > Upload All Local Images.
Choose where the images go
By default, images go to the destination selected in Aktar's menu bar, named with its path template. To send Typora images somewhere else, add options to the command:
/opt/homebrew/bin/aktar upload -d Blog # a destination named "Blog"
/opt/homebrew/bin/aktar upload --folder docs/images # keep file names, in one folder
Keep the output as plain URLs (the default): Typora writes the Markdown itself, so don't add --format or --json here.
If Test Uploader fails
- Command not found, or node not found: use the full path from
which aktar. The Homebrew version brings its own path to Node, so it works from Typora as is; with an npm install, run it as/path/to/node /path/to/aktar upload. - Not connected to Aktar: run
aktar loginin a terminal, and make sure Aktar is running with Allow local connections on. - The link opens with Access Denied: the upload worked, but the bucket isn't public at its public URL. See Access Denied errors.
Common questions
Does this work with Cloudflare R2, Backblaze B2 and MinIO?
Yes. aktar uploads to whatever destination Aktar has, including Amazon S3, Cloudflare R2, Backblaze B2, DigitalOcean Spaces and MinIO. See the setup guides.
Do I need PicGo or a plugin?
No. Typora's built-in Custom Command option runs aktar directly.
Can uploaded images expire?
Yes, add --expires 30 to the command to have the bucket delete them after 30 days. For images in documents you publish, you'll usually want to keep them.