miinideckmiinideck
PricingUse casesBlog
Sign in
By role

Portfolio / about / CV on your own URL — without Webflow (2026)

A personal site updates twice a year. CMS subscriptions and full deploy pipelines are sized for sites that update twice a week. The middle ground: one HTML file at your own domain.

By miinideck ai research team·July 2, 2026·7 min read
TL;DR
  • A personal portfolio, about page, or CV updates a few times a year — when a project ships, when a role changes, when a piece of writing goes live. The cadence doesn't justify a CMS subscription or a deploy pipeline.
  • Most hosting options fit either heavy ongoing sites (Webflow, Squarespace, WordPress) or platform-stamped URLs (Notion's subdomain, Linktree's domain, GitHub Pages' github.io).
  • A single self-contained HTML file at your own domain, hosted via a private-link service with searchable opt-in, covers the middle ground: own URL, indexable by search engines, no CMS fee, no deploy pipeline, edit by re-uploading.
  • For people who write the HTML in their tool of choice (Notion export, Figma export, Cursor / Claude generation), the path from "draft" to "live at yourname.com" is one DNS record and one file upload.

You ship a project worth showing. You write a short essay you want findable. A recruiter asks for a CV link instead of a PDF attachment. Each of these wants the same thing — a small URL at your own domain, easy to send, showing the current version of your work.

Most ways to do this overshoot. The site updates four times a year; the tooling is sized for sites that update four times a week.

What a personal site usually needs

Three properties, in order of how often each one matters:

  1. Your own URL. yourname.com/portfolio reads differently than yourname.notion.site/portfolio or username.github.io. For a designer, a freelancer, anyone whose work is partly judged by how their own surface looks, the URL is the framing.

  2. Renders correctly across devices. Recruiters open the URL on their phone. Clients open it during meetings. The page has to read clean on whatever they're holding.

  3. Easy to update without ceremony. When a new project ships or a role changes, the update should take ten minutes — not "log into the CMS, find the page, navigate the editor, save, deploy."

The lower-priority properties (multi-page navigation, blog, contact form, animations) are nice to have but rarely the deciding factor. Most personal sites work as one page.

The five common hosting shapes

ShapeCustom domainSetup timeOngoing costBest for
Webflow / Squarespaceyes (paid)half a day$12-30/moSites that update weekly, multi-page, e-commerce
WordPress (self-hosted)yesa day$5-15/moSites that genuinely need a CMS, plugin ecosystem
GitHub Pagesyes (free CNAME)an hour$0Devs comfortable with git, fine with rebuild on push
Notion public pageonly on paid tierminutes$0-10/moQuick links, ongoing edits, doesn't mind Notion frame on free
Static HTML at private-link hostyes (paid tier)30 min$5-15/moOne-page sites, infrequent updates, own URL matters

The last shape covers the case the others don't fit cleanly — a one-page personal site at your own URL, updated by re-uploading the HTML, without a CMS or a deploy pipeline.

The walkthrough

For someone starting from "I have nothing":

  1. Write the HTML. Two paths:
    • Generate it. Prompt Claude or Cursor or v0 with a one-paragraph brief — make me a one-page portfolio with sections for selected work, about, contact; minimal design, system fonts, mobile-friendly. The cross-tool prompt patterns cover how to ask for a single self-contained file.
    • Export from a tool you already use. Notion → Export → HTML. Figma → Anima / Bravo / Dev Mode HTML export. A markdown file → Pandoc to HTML.
  2. Drop the file at a private-link host. Free tier on most hosts gives you the URL immediately; the file is one HTML, all assets inlined.
  3. Set up a custom domain. The shape is a CNAME from yourname.com (or www.yourname.com) to the host. The setup walkthrough for custom domains covers the DNS detail; takes 10-15 minutes.
  4. Enable searchable opt-in for the portfolio page. Most private-link hosts default to noindex (which is the right shape for delivery use cases); for a portfolio that should be findable in Google, flip the per-document searchable toggle.
  5. Send the link. It works on every device, opens at your domain, gets indexed by search engines.

When you ship a new project two months later, the update is: edit the HTML (or re-export from Notion / Figma), drop the new file at the same URL, done. No git push, no CMS log-in, no deploy queue.

The Notion export specifically

For people who already keep their portfolio in Notion (write the project descriptions, paste the screenshots, link the case studies):

  1. Notion page → ... menu → Export → HTML (with included subpages if multi-section).
  2. The downloaded zip contains an HTML file plus an assets folder. Open the HTML, check the layout — Notion exports are usually clean and minimal.
  3. For full portability, paste the HTML into Claude with the portable-conversion prompt and ask it to inline the assets folder contents into the HTML directly.
  4. Drop the resulting single file at the host.

The win over Notion's native public page: the URL is yours, the page reads as your work product not as a Notion document, and you keep editing in Notion (which is what most people are already doing for the content).

Test the flow with a one-page draft — drop the HTML, see how the URL behaves, walk through the experience on your own phone. Free, no card, 7-day self-destruct on the anonymous tier (upgrade to permanent before pointing your domain at it).

Try it free (no signup)

What changes when the site is at your own URL

A few small things, mostly framing:

  • Email signature — "yourname.com" reads more like a professional surface than "username.notion.site/page".
  • Sharing in a bio link or LinkedIn — same shape, less explanation needed.
  • Search engine results — Google indexes the page at your domain, not the platform's. Backlinks accumulate to your domain over time.
  • Forwarding — when someone shares your URL with a third party, the third party sees your name in the URL, not the tool's.

None of these are dramatic. Together they're the difference between the portfolio reading as your professional surface and reading as a doc you happened to make in a tool.

What this is not

A static HTML at a private-link host is the wrong shape for sites that genuinely need a CMS:

  • Blog with weekly posts — the editing cadence makes the export-upload loop tedious. Webflow / Ghost / a real static site generator fits better.
  • E-commerce or paid memberships — the host doesn't have the backend logic for payments, accounts, member-only content. Shopify / a proper site is the right shape.
  • Multi-author content — the workflow needs a CMS with permissions and an edit history.

For the single-page personal portfolio that updates a few times a year, the static-HTML shape covers exactly what's needed without paying for the rest. For time-bound event microsites, the same pattern works with expiry layered on. For something that needs to update weekly with blog posts, the right shape is different.

Solo plan ($4.99/mo) keeps the portfolio permanent and removes the footer. Studio plan ($14.99/mo) adds custom domain so the URL is yourname.com directly. The per-document searchable opt-in that makes the portfolio page indexable is on every tier — one page free, five on Solo, unlimited on Studio — while the rest of your account stays default-private. Password protection — handy for a private CV link aimed at specific recruiters — is free on every account.

See pricing

Picking the path

Three quick questions:

  1. How often does the site update? Few times a year → static HTML. Weekly → CMS.
  2. Does it need its own URL? Yes → custom-domain-supporting host. No → free tier on any platform.
  3. Should search engines find it? Yes → searchable opt-in (or any platform that defaults to indexed). No → leave default noindex.

For most one-page portfolio / about / CV sites, the answers are: yearly, yes, yes. Static HTML at custom domain with searchable opt-in fits all three.

That third answer is the unusual one, and it's worth understanding rather than just switching on: making one document searchable while the rest of the account stays private is an exception to a default, not a mode change — which is exactly right for a portfolio that should be found while the client work behind it stays unlisted.

More in By role

Five weeks in, your client has five links and no idea which one is this week's (2026)

Recurring reports break in a way one-off deliverables don't: every send produces another address, and the old ones keep working with old numbers in them. Here's the version where the report has one address for the whole engagement.

August 2, 2026·4 min read

Delivering an AI-written client report (2026)

The writing got fast. The handover didn't. Here's why the last step of client work — getting the finished thing in front of the client — quietly became the slow part, and what a good version of it looks like.

August 1, 2026·7 min read

Freelancers: pricing proposals as HTML, not PDF (2026)

A pricing proposal is read more like a website than a document. Channel options for sending one, and where private-link HTML sits between a PDF attachment and an esignature tool.

May 30, 2026·7 min read

Send your own private link.

miinideck turns a single HTML file into an unguessable link with optional password and expiry. Default-private, never indexed.

See the use casesTry it free →
miinideck

HTML files, finally as links — for AI builders, agencies, and consultants. Default-noindex, default-private, default-yours.

Product

  • Pricing
  • Use cases
  • Try it free

Resources

  • Blog
  • Featured on
  • Report abuse

Legal

  • Privacy
  • Terms
© 2026 miinideckMade for people who don't want their work indexed.