PicGo vs Upgit

| By Molunerfinn · Last checked

PicGo vs Upgit

The short version. Upgit is a single executable and a TOML file. You put it on your PATH, point Typora’s Custom Command at it, and it uploads. PicGo is larger: a desktop app for uploading by hand, PicGo-Core for the terminal and for Node.js code, and a plugin system for hosts and image processing. If one command covers everything you need, Upgit is the lighter choice. If you want a GUI, a JavaScript API, or tools that act on images and Markdown you already have, PicGo covers more ground.

What you install

Upgit is one binary. upgit init writes a starter config, and from then on everything lives in that TOML file and in environment variables: which uploader to use, how files are named, how the output is formatted. There is nothing else to run.

PicGo comes in two pieces that can be installed separately:

  • the desktop app, which uploads by drag and drop, clipboard, hotkey or from an editor, keeps an album of past uploads, and runs a local HTTP server for other tools;
  • PicGo-Core, installed from npm, which gives you the picgo command and a Node.js API.

They share the same uploader and plugin model but keep separate configuration, so set up the one you actually use.

The same Typora setup, both ways

Typora’s image upload settings can call either tool. With Upgit, choose Custom Command and put the path to the upgit binary in the Command box. Typora passes the local image paths, Upgit uploads them with the uploader in your TOML, and prints the URLs for Typora to insert. Test Uploader confirms it works.

With PicGo, choose PicGo-Core (command line) — or PicGo.app where Typora offers it — and Typora handles the rest. On the PicGo-Core route, first run:

npm install picgo -g
picgo set uploader

The Typora guide walks through both routes and the errors people usually hit.

Both reach the same result in Typora. The difference shows up outside it: PicGo’s uploader configuration is also what the desktop app, the Obsidian integration and your scripts use.

Scripting it

Both can be called from a shell script. The gap is inside a program.

To use Upgit from Node.js you spawn a process, pass arguments, wait for it to exit and parse stdout. PicGo-Core is a library as well as a command, so a documentation generator or a build step can import it and get URLs back as values:

import { PicGo } from 'picgo'

const picgo = new PicGo()
const result = await picgo.upload(['/abs/path/out/chart.png'])
console.log(result[0].imgUrl)

That is the main reason to pick PicGo for automation: the same uploader, the same plugins and the same config, callable from code without a subprocess.

Extending it

Upgit’s v0.3.0 README lists a broad built-in catalog: Git-backed storage including GitHub and GitLab, S3-compatible and cloud object storage, and a set of hosted and self-hosted image services, plus configurable HTTP recipes. For many people that list already includes their host, and TOML controls naming, link rewriting and output templates. Version 0.3.0 removed the ext add command, so new hosts now arrive with Upgit releases or as HTTP recipes you write yourself.

PicGo’s model is packages. Anything named picgo-plugin-* on npm can add an uploader (for example S3, Cloudflare R2 or MinIO) or a processing step (compression, watermarking, format conversion). The desktop app has a plugin manager; PicGo-Core uses picgo install <name>.

Processing is where this matters most. Upgit’s job is to move a file and format a link. PicGo can transform the image on the way — compress it, watermark it, convert it — because a plugin sits in the pipeline.

Moving images you already published

Sooner or later a host shuts down or you move a blog to new storage, and every image link in your Markdown needs to change. PicGo’s pic-migrater plugin handles that: it scans the files, re-uploads each referenced image to your current host and rewrites the links in place.

picgo install pic-migrater
picgo set plugin pic-migrater
picgo migrate ./posts/

The migration guide covers Obsidian vaults and the edge cases. Upgit’s scope is new uploads, so this would be a separate script you write.

Configuration on more than one computer

Upgit’s config is a text file. That is easy to put in a dotfiles repository, and you decide how secrets like tokens are handled.

PicGo’s desktop app offers configuration sync through a PicGo Cloud account: uploader settings, plugin configuration and hotkeys, with automatic, server-side encrypted and end-to-end encrypted modes. It is included on every plan, including Free. It syncs settings, not image files, and it does not cover a separate PicGo-Core installation.

If you do not have a host at all, PicGo also ships an optional PicGo Cloud uploader with a free tier, so you can start uploading before creating a bucket or repository.

When Upgit is the better fit

Choose Upgit if you want the smallest possible tool: one binary on PATH, one readable TOML file, and a Typora Custom Command. upgit --clipboard --output clipboard -f markdown turns a copied image into paste-ready Markdown, and upgit uploaders shows what is available. If your host is in its catalog and you never need a GUI, a Node.js API, image processing or link migration, Upgit does the job with less to install and less to learn.

Frequently asked questions

Q: Why choose PicGo over Upgit for a Markdown workflow?

A: Choose PicGo if you want a desktop app next to the command line, a Node.js API you can import, plugins that process images, or a way to migrate the images in existing Markdown. Choose Upgit if one command and a TOML file cover what you do.

Q: Does Upgit only upload to GitHub?

A: No. GitHub is the starter configuration, but Upgit v0.3.0 also documents GitLab, S3-compatible storage, cloud object stores, and several hosted or self-hosted image services.

Q: Can I use PicGo without the desktop app?

A: Yes. PicGo-Core is a standalone npm package with the picgo command and a Node.js API, and Typora can use it directly.

Q: Do I need PicGo Cloud to use PicGo?

A: No. PicGo Cloud is optional. PicGo uploads to whichever provider you configure. Configuration sync does require a PicGo Cloud account, on any plan including Free.

For Mac menu-bar workflows, see PicGo vs uPic. If Windows screenshot capture is part of the decision, see PicGo vs ShareX.

Public sources

Sources reviewed in September 2026. Storage-provider requirements, service limits and plugin compatibility can change; check the linked sources before installing or migrating.

Download PicGo — free and open source.