Upload your work
Quickly turn your photos, images, and videos into a shareable link.
服務異常或緊急需求?聯絡我們
load.tw upload tutorial — image, video & audio sharing
- Choose files: Click "Choose files" or drag files to the upload zone. Up to 7 images + 2 videos + 3 audios per share. Images support JPEG / PNG / WebP / GIF / HEIC / AVIF, videos MP4 / MOV / WebM, audios MP3 / M4A / AAC / WAV / OGG / FLAC.
- Edit images (optional): Click the "✎ edit" button on any thumbnail to open the built-in editor with crop, rotate, flip, mosaic, and sticker tools. Save overwrites the original.
- Reorder: Long-press a thumbnail for 0.2s to drag and reorder. The first image becomes the cover and OG preview image.
- Description (optional): Up to 90 chars, shown on the share page and used as the Google search meta description.
- Expiry: 12 presets from 1 minute to 30 days, or choose never expires. Expired shares are auto-deleted from the cloud.
- View limit (optional): Share auto-expires after N views. Leave empty for unlimited.
- Password (strongly recommended): For sensitive content, always set a password. Passwords are stored with bcrypt hashing — even admins can't recover them.
- Publish to gallery (optional): Check to submit for admin moderation. Approved uploads appear on homepage and /gallery.
- Click "Create share link": You'll get a 6-character case-sensitive short URL (e.g.,
load.tw/av5F45), totaling 62⁶ ≈ 56.8 billion combinations — impossible to guess. - Copy & share: One-click copy. Sign in to edit descriptions, passwords, expiry, or view real-time analytics (daily views, country, device, referrer) in your dashboard.
⚠️ Notes:
- Short codes cannot be changed after creation (privacy), but descriptions, passwords, expiry, and view limits are editable.
- Expired shares are automatically purged from the cloud — no recovery possible.
- load.tw is free forever — no paid tiers, no hidden fees, no tracking pixels (AdSense display ads only).
- Supports anonymous uploads (no login required), but sign-in is needed to manage, edit, or delete your uploads.
每一條短網址都有即時流量分析(範例)
以下是流量分析儀表板的真實樣式(示範資料)。登入後每條分享都能看到。
3,149
1,573
47
∞ 無期限
📊 過去 30 日瀏覽量(範例)
🌍 國家 / 地區
📱 裝置類型
⬆ 以上為示範資料。登入後每條分享都有自己的即時流量分析儀表板。
How to upload — from zero to your first short URL
Upload flow overview
The upload flow on load.tw is intentionally simple: drag files → choose expiry → (optional) set password → click Create Share Link. The whole process takes under 60 seconds, and you'll get a 6-character short URL like load.tw/av5F45. First-time users might wonder "where did my file actually go?", "why is the progress bar moving so fast?", or "why don't I need to sign up?" — let us explain.
Why is uploading so fast?
Because your files never pass through our PHP server. Traditional image hosts work like this: browser → PHP server → cloud storage, doubling bandwidth costs and blowing up server memory. load.tw uses a presigned direct-upload approach: when you click "Create Share Link", the frontend calls /upload/presign and our PHP does only one thing — generate a time-limited signed upload URL. Your browser then PUTs the file directly to cloud storage, completely bypassing our server. Result: upload speed depends on the bandwidth between you and the cloud (typically 50–200 Mbps), not our server's bandwidth.
Why are thumbnails generated automatically?
The moment you drop a file, your browser generates a 400 px thumbnail in the background using the Canvas API (compressed as WebP, with JPEG fallback). This thumbnail is used for the homepage masonry, gallery previews, and OG share cards — it never replaces your original file. Why? Because the gallery page loads 12 previews at once. Using originals (25 MB × 12 = 300 MB) would destroy mobile data plans. With thumbnails, the same 12 previews need only ~600 KB — 500× less bandwidth.
How to choose expiry + view limit combos?
- 1 min / 5 min: Share a screenshot during a chat — it vanishes after the other person sees it. The proper "burn after reading" approach.
- 1 hour / 6 hours: A coworker needs to see a live data screenshot — valid for half a day is enough.
- 1 day / 3 days: One-time events, single-use shares, limited giveaways. This is the default — the safest choice.
- 7 days / 10 days: Group buys, flash sales, short-term promotions.
- 30 days: Long campaigns, multi-week fundraisers, large exhibitions.
- Unlimited: Portfolios, IG Bio links, long-term website assets, blog images. Managed manually from your dashboard.
View count limits can stack with expiry. For example, "password + 1 hour + 3 views" means the first 3 people who know the password can view within 1 hour — any condition triggered first will auto-expire the link. This is the most common combo for highly sensitive content.
Password security
Your password is never stored in plain text. load.tw uses PHP's built-in password_hash() with bcrypt (cost factor 10), taking about 100 ms per verification. Even if the entire database were stolen, attackers cannot reverse the hash — they can only brute-force one by one, requiring ~3 hours for 100,000 attempts. Combined with Cloudflare rate limiting, it's practically uncrackable. See the password-protected sharing guide for details.
How many files per upload is reasonable?
The technical limit is 7 images (25 MB each) + 2 videos (400 MB each) + 3 audio files (50 MB each) — 12 files total. But in practice, choose based on your use case:
- 1 hero image + 1–2 detail shots: Product listings, single artwork showcase
- 3–5 photos: Event coverage, travel highlights, birthday party
- 7 photos + 1 video: Full portfolio release, vlog trailer
- 1 video: Simple video sharing — no need to compete with YouTube
- 1 audio: Podcast previews, demo tracks, voice messages
If you need more than 7 images, you probably need a dedicated album site, not a single short URL. For 1,000 wedding photos, use Google Photos or a dedicated album service, not load.tw.
Supported devices
Desktop: Chrome / Safari / Firefox / Edge — all supported.
iOS: Safari 15+, Chrome / Firefox / Edge all supported. You can drag photos from your camera roll directly into the dropzone.
Android: Chrome / Samsung Internet / Firefox all supported. Use the Share button in your photos app to send to load.tw.
HEIC images (iPhone photos) may skip thumbnail generation on desktop Chrome, but the original file uploads and displays correctly (iOS/macOS Safari works perfectly).
Real-time analytics for every share
After uploading and getting your 6-character short URL, if you're logged in, every share comes with a real-time traffic analytics dashboard. Open it from "My Dashboard" → click the "📊 Traffic" button next to any upload. You'll see:
- Total views + favorites: Four overview cards at the top — total views, ❤ favorites, last 30 days, status (active / expired / deleted). Numbers are queried from the DB in real time — no 5-min delay, no sampling errors.
- 30-day daily views bar chart: Each bar = one day's views. Spot viral spikes instantly. Generated via SQL
GROUP BY DATE(created_at)using indexed queries (< 30 ms even with millions of views). - Country distribution (Top 15): Which countries your visitors come from, shown as horizontal bars. Uses Cloudflare's
CF-IPCountry2-letter ISO code with flag emojis. Great for cross-border creators to see where their content resonates. - Device type breakdown: Desktop 💻 / Mobile 📱 / Tablet 🔲 / Bot 🤖 / Unknown ❓. If Bot ratio exceeds 15%, your content may be targeted by crawlers — consider adding a password.
- Top 10 referrers: Where visitors came from — Instagram, Threads, Facebook, LINE, Google, Dcard, direct visits, etc. See which channel drives the most traffic to your share.
Real-time vs Google Analytics
Most websites use Google Analytics, but GA has three issues for file-sharing scenarios: (1) 12–24 hour data delay; (2) relies on JavaScript tracker pings — users who right-click download or embed bypass JS entirely; (3) GA is designed for whole-site analysis, making per-file traffic views cumbersome (requires UTM params + filters).
load.tw uses server-side real-time logging: the moment a visitor hits a short URL, PHP writes a view_logs row to the database. Your analytics page picks it up on the next query. No JS, no delay, independent dashboards per share. This approach is common inside large SaaS companies, but rarely offered as a default feature in free image hosts.
Visitor deduplication
The "total views" you see are unique views, not total requests. The same visitor refreshing 10 times in one session counts as 1 (deduplicated via $_SESSION['v'][$upload_id] flag). This is closer to Google Analytics' "Users" concept and more accurately reflects real engagement than raw "Pageviews."
Privacy protection
Detailed analytics and visitor privacy are not in conflict. view_logs stores only 5 fields: upload_id, created_at, country (2-letter code), device (type), referer (truncated to 80 chars). Not stored: IP addresses, full user agent strings, cookies, visitor fingerprints. Not sent externally: no Google Analytics, no Meta Pixel, no third-party tracking scripts. Fully compliant with GDPR and Taiwan's Personal Data Protection Act.
Data retention
Raw view_logs are retained for 90 days, then automatically purged by cron (aggregate totals are unaffected; only individual date points in the bar chart are trimmed). This balances "enough trend analysis" with "preventing unlimited database growth."