storageto
Upload a file, get a link. No buckets.
Command-line tool for storage.to - simple, fast file sharing.
Installation
Homebrew (macOS/Linux)
brew install storageto/tap/storageto
Using Go
go install github.com/storageto/cli/cmd/storageto@latest
Make sure ~/go/bin is in your PATH.
Pre-built Binaries
Download from Releases.
From Source
git clone https://github.com/storageto/cli.git
cd cli
make install
Usage
Upload a single file
storageto upload photo.jpg
Output:
URL: https://storage.to/FQxyz1234
Raw: https://storage.to/r/FQxyz1234
Size: 2.1 MB
Expires: 2026-01-29T12:00:00Z
- URL - Human-friendly download page
- Raw - Direct download link (for
curl, wget, scripts)
Upload multiple files
Multiple files are automatically grouped into a collection:
storageto upload file1.txt file2.txt file3.txt
Or use glob patterns:
storageto upload *.log
storageto upload src/**/*.go
Large files
Files larger than 5GB are automatically uploaded in chunks with resumable multipart upload. Progress is shown during upload:
1.2 GB / 10.0 GB (12.0%)
Press Ctrl+C to cancel - partial uploads are cleaned up automatically.
Options
Flags:
-c, --collection Force collection even for single file
-v, --verbose Show detailed progress
--json Output result as JSON (for scripting)
--no-token Run without persistent identity token
--api string API endpoint (default "https://storage.to")
-h, --help Show help
JSON output
Use --json for machine-readable output:
storageto upload photo.jpg --json
{
"is_collection": false,
"file_info": {
"url": "https://storage.to/FQxyz1234",
"raw_url": "https://storage.to/r/FQxyz1234",
"size": 2097152,
"human_size": "2.0 MB",
"expires_at": "2026-01-29T12:00:00Z"
}
}
Downloading Files
The CLI creates shareable URLs. Anyone can download:
# Direct download (follows redirect to file)
curl -LO https://storage.to/r/FQxyz1234
# Check file info first
curl -I https://storage.to/r/FQxyz1234
# Download collection as JSON manifest
curl https://storage.to/c/FQabc5678.json
Configuration
The CLI stores a persistent identity token for upload tracking:
- Location:
~/.config/storageto/token (Linux), ~/Library/Application Support/storageto/token (macOS), %AppData%\storageto\token (Windows)
- What it is: A random anonymous identifier (not an API key or auth token)
- What it does: Links uploads from this machine so you can see "your recent uploads" without signup
- Privacy: Delete the token file to reset your identity, or use
--no-token for fully anonymous uploads
# Run without any identity tracking
storageto upload photo.jpg --no-token
Limits
Anonymous CLI uploads (no account):
| Limit |
Value |
| Uploads per day |
20 |
| Max file size |
25 GB |
| File expiry |
3 days |
With account: Higher limits based on your plan. See storage.to/pricing.
Development
Building from source
git clone https://github.com/storageto/cli.git
cd storage.to-cli
make build # Build binary
make test # Run tests
make install # Install to ~/go/bin
Project structure
├── cmd/
│ └── storageto/
│ └── main.go # Entry point
├── internal/
│ ├── api/ # API client
│ ├── cli/ # CLI commands (cobra)
│ ├── config/ # Config and token management
│ ├── upload/ # Upload logic (single + multipart)
│ └── version/ # Version info (set at build time)
├── Makefile # Build with version injection
└── README.md
Building releases
make release
Creates binaries for:
- macOS (Intel + Apple Silicon)
- Linux (amd64 + arm64)
- Windows (amd64)
License
MIT License - see LICENSE