Put your HTML portfolio online for free
Upload your HTML file, folder, or ZIP to ship.page and share a live link in seconds, free forever with no signup or credit card. The free plan takes single HTML files up to 10 MB, ZIPs up to 25 MB (100 MB unpacked), and up to 100 files per upload with unlimited uploads and no bandwidth limits.
A file. A folder. A fresh start.
Your static site, one link away.
Uploading publishes your file. The link is public but unlisted, not password-protected, so leave out secrets and confidential content.
- Up to 100 MB unpacked and 100 files on the free plan
- 25 MB ZIP
- Single HTML file limit on every plan
- 10 MB HTML
- Publish in the browser with no account or credit card
- 0 signups
- Keep the same link when you update and add subdomains
- $4/mo Pro
How to publish your HTML portfolio in seconds
Name your main portfolio file index.html
Make sure the homepage of your portfolio is saved as index.html. Put your CSS stylesheets, JavaScript files, fonts, and project screenshots in the same folder, and check that all file paths match exact uppercase and lowercase letters.
Zip the folder if it has many assets
You can drag a folder straight into the browser if it is under roughly 7 MB of files (encoded into a 10 MB request). For bigger portfolios, compress the folder into a .zip file up to 25 MB (100 MB unpacked) on the free plan; a single top folder inside the ZIP is unwrapped automatically.
Drop it into ship.page
Drag your index.html file, folder, or ZIP into the uploader on this page, or paste raw HTML. You do not need an account or a credit card.
Copy your live HTTPS link and QR code
Your portfolio is live in seconds on its own subdomain over HTTPS, and the success screen gives you a downloadable PNG QR code for your resume. You can claim the upload with a free account (using Google or an email link, no card) to manage it from a dashboard.
Ways to put an HTML, CSS, and JS portfolio online
| Route | Account | Time to a link | Update later |
|---|---|---|---|
| ship.page free | None required (optional free account to claim) | Seconds | New upload gets a new link |
| ship.page Pro ($4/mo) | Account required | Seconds | Re-upload or edit in place and keep the same link |
| GitHub Pages | GitHub account and public repository required | A few minutes to create a repo and push files | Commit or upload to the repo (up to 10 builds/hour) |
| Netlify Drop | Account required to remove temporary password | Seconds (behind a password until claimed) | Claim with an account to deploy updates |
Which free HTML host should you pick for a portfolio
If you want to send a working link to a recruiter or client right now without creating an account, ship.page is the fastest option. You drop your HTML file, folder, or ZIP archive into the browser and get an open HTTPS link in seconds. Every uploaded page includes a noindex header and is never listed publicly, so only people with your link can view your work.
If you want a public site indexed by search engines or you want to attach your own custom domain name, GitHub Pages is the better pick. It is free for public repositories on GitHub Free, supports custom domains, and allows sites up to 1 GB at owner.github.io with a 100 GB monthly soft bandwidth limit and 10 builds an hour, though it cannot be used as free hosting for a commercial, e-commerce, or SaaS business.
Netlify Drop (app.netlify.com/drop) also lets you drag a folder, ZIP, or HTML file into the browser without signing in first, and its docs note that deploys under 50 MB work best while single files over 10 MB may get stuck. However, an unclaimed Netlify Drop sits behind a temporary password and expires on its own until you create a Netlify account to claim it.
How to update your portfolio without breaking links on your resume
When you publish on the ship.page free plan, you cannot update a page in place; uploading a new version gives you a new URL. That works well for a quick design review or a one-off class submission, where you just turn an HTML file into a link and send it.
If you put your portfolio URL on a printed resume or LinkedIn profile, Pro ($4 a month, cancel anytime) lets you re-upload or edit your page and keep the exact same link. Pro pages do not expire while you are on Pro, or you can set a custom expiry starting at 60 seconds.
Pro also removes the small closable badge shown on free pages, adds optional password protection, raises the limit to 100 MB ZIPs (400 MB unpacked) and 10,000 files, and includes up to 5 custom subdomains like yourname.ship.place that you can point at any of your pages and move anytime.
What works in a static HTML portfolio (and what to watch out for)
ship.page serves static files as-is: HTML, CSS, JavaScript, images, fonts, audio, video, WebAssembly, and JSON all work out of the box. You can also use this setup to put an HTML5 canvas or WebGL game online in your portfolio, as long as you turn off pre-compressed .br or .gz build output or bundle a JavaScript decompressor, since files are served with no Content-Encoding.
Because there is no server code (no PHP, Node.js, Python, or database), contact forms need a third-party form service or a mailto link. If you want to compare more ways to build and host your work, see our guides on creating a free portfolio website and choosing the best free HTML portfolio hosting.
- Multi-page URLs: a file named about.html opens at /about.html, while a clean /about path requires saving the file as about/index.html.
- Client-side routing: there is no single-page-app fallback and no custom 404 page, so React or Vue portfolios should use hash routes like #/projects.
- Standalone media: a lone PDF resume, image, or video file is not accepted by itself; put it inside a folder or ZIP alongside an index.html file.
- Case sensitivity: file paths are case-sensitive, so linking to Images/pic.png will fail if the folder is named images.
Tip: Developers who update their portfolio from a code editor can also deploy with one curl command (POST https://ship.page/deploy), the MCP server at https://ship.page/mcp, or the GitHub Action.
Questions
How do I put my HTML, CSS, and JS portfolio online for free?
Put your index.html file and your CSS, JavaScript, and image files into one folder, or compress that folder into a ZIP file. Drag the folder or ZIP into ship.page in your browser to get a live HTTPS link in seconds for free, with no account or credit card required.
Can I update my portfolio later and keep the same URL?
On the free plan, a page cannot be updated in place, so uploading a new version creates a new link. On the Pro plan ($4 a month), you can re-upload or edit your portfolio and keep the same URL, and you also get up to 5 custom subdomains like yourname.ship.place.
How big can my portfolio or HTML game be on the free plan?
The free plan accepts a single HTML file up to 10 MB, or a ZIP archive up to 25 MB (up to 100 MB unpacked) containing up to 100 files. If you need more room for high-resolution images or game assets, the $4/month Pro plan takes ZIPs up to 100 MB (400 MB unpacked) and up to 10,000 files.
Can I upload my PDF resume by itself?
No, the uploader only accepts .html files, .zip files, folders, and pasted HTML, so a standalone PDF, image, or video is rejected. Put your PDF inside your portfolio folder alongside your index.html file and link to it from your page.
Will Google index my uploaded portfolio?
No. Every page hosted on ship.page is sent with a noindex header so search engines leave it out, and uploads are never listed in a public directory. Anyone you give the link or QR code to can open it directly.
Can I use my own custom domain name?
No plan on ship.page offers custom domains. Pro includes up to 5 custom subdomains in the format yourname.ship.place; if you need to connect a domain you bought yourself, GitHub Pages supports custom domains for free on public repositories.
Keep reading
- Free portfolio website hosting
- Best free HTML portfolio hosting compared
- Host a ZIP file of HTML, CSS, and JS
- Turn an HTML file into a shareable link
Put your HTML portfolio online now
Drop your index.html, folder, or ZIP into the browser for a free HTTPS link in seconds, with no signup required.