A verb versus a place to live
Pingvin Share is a verb: you go there to turn a file into an expiring link, or to collect uploads via a reverse share. Cotton is a noun: a place your files live, with folders, versions, snapshots, and previews. Sharing with expiry is one Cotton feature, not the entire product.
No encryption at rest, no previews
Pingvin stores shares unencrypted at rest - its encryption request was closed as not planned - and its job ends at handing over a download link, with no media preview library. Cotton encrypts every chunk by default, adds client-side E2E folders, and renders waveform, 3D, HEIC, mobile PDF, and seekable video.
Footprint and maintenance, honestly both ways
Pingvin is genuinely lighter - one container with an embedded database, no Postgres. Fair flag: the original repository is archived, and active work continues in the community fork Pingvin Share X; Cotton is one actively developed product, one image plus Postgres.
Send a file, or keep your files
Pick Pingvin Share when all you want is to send a file that expires, or to receive files from people without giving them accounts. Pick Cotton when you want a place your files actually live - and sharing is just one of the things it does.