To upload images automatically in Typora, first configure PicGo-Core with an image host. In Preferences → Image, select Custom Command as the uploader and enter picgo upload. Run Test Uploader, then set When Insert… to Upload Image and enable Apply above rules to local images. Newly pasted images will upload through PicGo-Core and use the returned URLs.
Choose the PicGo-Core or desktop route
Typora stores only a reference to an image. A pasted local image may look correct on your computer while failing when you send the Markdown file elsewhere. Typora can pass that image to an external uploader and replace the local path with the returned URL.
There are two PicGo routes. PicGo-Core runs a command for each upload and exits when it finishes; it does not need the PicGo desktop app or its local server. PicGo.app uses the desktop application and requires its server to remain available. PicGo-Core is the most consistent route across Typora languages, so it is the recommended starting point here.
Whichever route you use, the image goes to the provider configured in PicGo. Review that provider’s privacy, expiration, and deletion rules before enabling automatic uploads. A successful upload does not guarantee a permanent or public URL.
Set up the PicGo-Core command
Install a current Node.js LTS release first. PicGo-Core requires Node.js 20.19.0 or later; its documented minimums for the Node.js 20 and 22 release lines are 20.19 and 22.12 respectively. Check the PicGo-Core documentation for current requirements, then install the command-line package:
npm install picgo -g
Confirm that your terminal can find it, then configure an uploader:
picgo -v
picgo set uploader
picgo get uploader
The second command opens the uploader configuration prompts. Saving selects that uploader, and picgo get uploader confirms the selection. You can later switch configurations with picgo use uploader <type> [configName]. Follow your provider’s documentation for its fields and keep access tokens out of notes and screenshots. Before involving Typora, upload a disposable local image:
picgo upload /absolute/path/to/test-image.png
Open the returned URL. If this command fails, fix the uploader or provider first; Typora cannot repair an invalid PicGo configuration.
Next open Typora → Preferences → Image. Set Image Uploader to Custom Command and enter:
picgo upload
This command is the route documented by Typora for a globally installed PicGo-Core. Choose Test Uploader. Typora should show a successful validation and the resulting URL. If it says the command cannot be found, use the absolute executable path reported by which picgo on macOS or Linux, or where picgo on Windows, followed by upload. Quote the executable path when it contains spaces, for example "/absolute/path with spaces/picgo" upload.
Some Typora builds also show a PicGo-Core (Command line) choice with a download or path field. That is supported too, but the packaged-binary availability and location vary by operating system. The custom command above keeps the executable and PicGo configuration visible and testable from a terminal.
Upload the first pasted image
In Preferences → Image, find When Insert… and select Upload Image. Enable Apply above rules to local images. Leave the corresponding online-image option off unless you deliberately want Typora to download and re-upload images that already have remote URLs.
Create and save a temporary Markdown file, paste a small screenshot, and wait for the link to change to http:// or https://. Open the URL in a browser. If other people must see it, also test in a private window where you are not signed in to the provider.
You can keep automatic upload disabled and upload only when needed: right-click an image and choose Upload Image. For a document that already contains local images, use Format → Image → Upload All Local Images after making a backup.
Typora also supports per-document behavior. Enable Allow upload images automatically based on YAML settings, then add this frontmatter to a document:
typora-copy-images-to: upload
Use PicGo desktop when Typora offers it
If PicGo.app appears in Typora’s Image Uploader list, you can reuse the graphical app instead of PicGo-Core:
- Download PicGo, configure your storage provider, and verify a direct upload in the app.
- In PicGo’s System settings, open Set Server, enable Enable Server, and use port
36677. - Keep PicGo running, select PicGo.app in Typora, provide the application path if Typora asks for it, and choose Test Uploader.
Typora’s current upload-image support page still labels the PicGo.app integration Chinese Language Only and says the option appears when Typora uses Simplified Chinese. PicGo itself includes an English locale, but that does not establish that an English Typora interface will expose the PicGo.app choice. If the choice is absent, use PicGo-Core through Custom Command rather than assuming a hidden setting exists.
The desktop route needs the PicGo process and server. The PicGo-Core command route does not use port 36677 and does not need the desktop app running.
Fix Typora image upload errors
Test Uploader says the command was not found
Typora may receive a smaller PATH than your terminal, especially when launched from a desktop icon. Replace picgo upload with the absolute path to the executable plus upload, quoting the path if it contains spaces. Run that exact command in a terminal once to confirm it works.
Why does Test Uploader work but pasted images stay local?
Validation only checks the uploader. Return to When Insert…, select Upload Image, and enable Apply above rules to local images. For an image already in the document, right-click it and choose Upload Image or use Upload All Local Images.
The PicGo.app route cannot connect
Make sure PicGo is running, Enable Server is on, and its port is 36677, which Typora’s documented GUI integration expects. If the GUI option is missing or remains unreliable, switch to the PicGo-Core custom command and test it independently.
Typora reports upload failure
Read the raw output in the validation dialog, then run the same PicGo-Core upload in a terminal or upload the file directly in PicGo.app. A failure in both places points to the PicGo uploader, provider credentials, quota, network, or file policy. A terminal success paired with a Typora failure usually points to the executable path or Typora configuration.
The returned link cannot be shared
Test outside your signed-in browser session. The storage provider may return a private or expiring URL. PicGo and Typora do not change the provider’s object permissions, so adjust sharing at the provider or choose a destination designed for public image links.
For the equivalent workflow in Obsidian, see Obsidian Image Upload with PicGo.
Still choosing an uploader? PicGo vs Upgit compares command-line and desktop workflows; PicGo vs uPic covers the choice for Mac users who also want plugins or cross-platform uploads.