Skip to the list

What a finished website has

The list we go through on the websites we look after: 111 things a finished site has, in 16 sections, each with one line on why it matters. It is written for the people who run the websites of small organisations – non-profits, institutes, event organisers, small businesses – and for the developers they call when something breaks.

Checked against its sources in September 2026; the sections on AI assistants and on screens in October 2026. This is not legal advice. The legal items say what the rules generally require, for the EU, Slovenia and, where it differs, Serbia, and link to the source; for your own situation, ask a lawyer.

How much it matters

Must
required by law, or without it you lose visitors or data.
Should
a real, measurable cost if it is missing.
Nice to have
polish, or insurance.

About the checklists that go around

Most points of the short checklists that go around on social media hold; several are true only in some cases, and what costs a site most is not on them at all. The e-book weighs each point.

When something goes wrong

  1. Error pages in the site’s language: 404 and 500

    Priority: Should

    Old links and typos land on a helpful page, with a real 404.

  2. Empty lists that say so

    Priority: Should

    An empty list says so, instead of a heading over nothing.

  3. Forms that tell the truth

    Priority: Must

    A false “Thank you” loses people who think they succeeded.

  4. Flaky networks and no network

    Priority: Nice to have

    Offline, a form says so instead of spinning forever.

  5. A maintenance page, ready before you need it

    Priority: Nice to have

    A ready 503 page tells search engines you will be back.

  6. Pages that change with time

    Priority: Should

    After the event, the page stops saying “Register now”.

  7. Nonsense in, a clear “no” out

    Priority: Should

    Junk in an address gets a clear 4xx, not a server error.

Turning visitors into action

  1. A clear call to action without scrolling

    Priority: Should

    The one thing you want people to do is visible at once.

  2. A sticky button for the main action on phones

    Priority: Nice to have

    On long phone pages, the main action stays within reach.

  3. A thank-you page that says what happens next

    Priority: Should

    People learn that their form arrived, and what happens next.

  4. Real contact details, not only a form

    Priority: Should

    People trust an organisation they can actually reach.

Privacy and consent

  1. A privacy notice

    Priority: Must

    Whatever personal data you collect, the law asks you to explain.

  2. Scripts added on the way to the visitor

    Priority: Must

    Your host can add trackers your consent banner never sees.

  3. Fonts and scripts from your own server

    Priority: Must

    Fonts loaded from Google send every visitor’s IP address to Google.

  4. No recording of what visitors type

    Priority: Must

    Recording what visitors type has no legal basis in the EU.

  5. Children

    Priority: Must

    Under 15, a parent consents; school games are better built not to need it.

  6. No personal data in addresses

    Priority: Should

    Names in addresses end up in logs, history and analytics.

  7. Visitors from Serbia

    Priority: Should

    Serving people in Serbia brings Serbia’s data protection law with it.

  8. Records and processor agreements

    Priority: Must

    The GDPR asks for a record, and a contract with each processor.

Email

  1. SPF, DKIM and DMARC on the sending domain

    Priority: Must

    Without SPF, DKIM and DMARC, your emails land in spam.

  2. Every email says who sent it

    Priority: Must

    Every email says who sent it, and why.

  3. A confirmation in the visitor’s language

    Priority: Should

    A confirmation in their language tells people their form arrived.

  4. Replies reach a person

    Priority: Should

    A reply to a confirmation reaches someone who reads it.

  5. Newsletters and announcements

    Priority: Must

    Newsletters go only to people who said yes, with one-click unsubscribe.

  6. Sending limits and bounces

    Priority: Should

    A rush of sign-ups can hit a free plan’s daily cap.

Selling online

  1. Renewal terms beside the pay button

    Priority: Must

    Renewal terms go beside the pay button, or renewals can be claimed back.

  2. The button says it costs money

    Priority: Must

    The last button says it costs money: “Pay”, not “Continue”.

  3. A confirmation the buyer keeps

    Priority: Must

    Buyers get a confirmation to keep, with how to cancel.

  4. Cancelling online, as easily as signing up

    Priority: Must

    Cancelling online is as easy as signing up.

  5. Terms, 14 days to withdraw, and the withdrawal button

    Priority: Must

    EU consumers get 14 days to withdraw, and a button to do it.

  6. Prices with VAT and delivery

    Priority: Must

    Prices say whether VAT and delivery are included.

  7. Slovene for consumers in Slovenia

    Priority: Must

    Consumers in Slovenia are served in Slovene.

Being found and shared

  1. A title and description on every page

    Priority: Should

    Search results show each page’s own title and description.

  2. A share image on every page

    Priority: Should

    Without one, a shared link is a grey box.

  3. Favicon, touch icon and web manifest

    Priority: Should

    Without icons, browsers and phones show a blank square.

  4. A sitemap with every page in every language

    Priority: Should

    It tells search engines which pages exist, in every language.

  5. A robots.txt that says what you mean

    Priority: Should

    robots.txt cannot hide pages from search, but can hide the wrong ones.

  6. One canonical address per page

    Priority: Should

    Each page names itself as the original, not a copy.

  7. Language versions that point at each other

    Priority: Should

    Search engines show each reader the page in their language.

  8. Each language has its own address

    Priority: Should

    A language without its own address cannot be found or shared.

  9. The page says which language it is in

    Priority: Must

    Screen readers, translators and search engines go by the declared language.

  10. Structured data for events and organisations

    Priority: Should

    Search engines learn what an event or organisation is, without guessing.

  11. Short addresses and old links redirect

    Priority: Should

    Poster addresses and old links arrive somewhere, not at an error.

  12. One address for the whole site

    Priority: Should

    Every variant of the address leads to the one real address, in one step.

  13. Search Console, and no stray noindex

    Priority: Nice to have

    See what is indexed, and catch a stray noindex in time.

Found and quoted by AI assistants

  1. Answers in the HTML, under clear headings

    Priority: Should

    Most AI crawlers read only the HTML, so the answers must be there.

  2. AI crawlers: answering and training are separate choices

    Priority: Should

    Block every AI crawler and you vanish from AI answers too.

  3. llms.txt: optional, and no substitute for the page

    Priority: Nice to have

    Optional, and useful only if it is true and current.

  4. Who wrote it, and who stands behind it

    Priority: Should

    Search engines and assistants trust pages that say who stands behind them.

  5. Dates that are true, facts that are current

    Priority: Should

    An assistant quoting last year’s price quotes you wrongly.

Accessibility

  1. Text you can read

    Priority: Should

    Light grey on white is the most common reason text cannot be read.

  2. Everything works with a keyboard, and you can see where you are

    Priority: Should

    Some people cannot use a mouse; everything must work without one.

  3. Alt text on every image, and a clear structure

    Priority: Should

    Screen reader users hear the alt text and move by headings.

  4. Forms everyone can fill in

    Priority: Should

    Labels, errors read aloud and no puzzles let everyone fill in a form.

  5. Targets big enough to tap

    Priority: Should

    Small buttons and links are hard to hit with a finger.

  6. Less motion for those who ask for it

    Priority: Should

    Big animations can make some people dizzy or sick.

  7. Does the European Accessibility Act apply to you?

    Priority: Must

    Selling online to consumers can bring a site under the Act.

  8. Public bodies: an accessibility statement

    Priority: Must

    Public bodies in Slovenia must meet WCAG and publish a statement.

Every screen: phone, tablet, laptop, foldable

  1. Works on a phone, from 320 pixels wide

    Priority: Should

    Most visits are on phones; the page must fit from 320 pixels.

  2. Tablets and the widths in between

    Priority: Should

    Layouts break most often between phone and laptop widths.

  3. Laptops and big monitors

    Priority: Should

    Laptops are shorter than they look; big screens need narrow text.

  4. Upright and sideways

    Priority: Should

    Some people cannot turn their device, so both ways up must work.

  5. Foldable phones: closed, open and half-open

    Priority: Nice to have

    A foldable resizes the page while it is open; nothing typed may be lost.

  6. Notches, rounded corners and the browser’s bars

    Priority: Nice to have

    Cut-outs, corners and browser bars can hide what sits at the edges.

  7. Tried at real widths, on real devices

    Priority: Should

    A layout designed at three widths breaks at the fourth.

Security

  1. HTTPS everywhere, and HSTS

    Priority: Must

    Every page encrypted, and browsers told never to use plain HTTP.

  2. Security headers

    Priority: Should

    A few response headers stop whole classes of attack.

  3. No secrets or private files in public

    Priority: Must

    Secret keys and files sometimes end up readable by anyone.

  4. Database access rules

    Priority: Must

    The browser’s database key is public, so personal data must be locked.

  5. Admin and CMS pages

    Priority: Should

    Sign-in pages stay out of search and frames, and limit guessing.

  6. Spam protection that does not punish people

    Priority: Should

    Invisible layers stop most spam; puzzle CAPTCHAs shut people out.

  7. Rate limits that do not lock out mobile users

    Priority: Must

    Thousands of phones share one IP address; per-IP limits block them.

  8. Dependencies kept up to date

    Priority: Must

    An outdated framework is open to weaknesses that are already public.

  9. security.txt

    Priority: Nice to have

    Whoever finds a vulnerability needs to know where to report it.

  10. Tidy DNS

    Priority: Nice to have

    A forgotten subdomain can be taken over by someone else.

Speed

  1. Core Web Vitals in the green

    Priority: Should

    Google measures whether a page appears fast, responds fast and stays still.

  2. Images, video and icons in light formats

    Priority: Should

    One 5 MB photo slows the page for everyone.

  3. Fonts that load fast and have every letter

    Priority: Should

    Your own fonts load fast and have every letter, č and đ too.

  4. Few third-party scripts, loaded late

    Priority: Should

    Every widget and tracker adds weight and competes with your content.

  5. Hosting quotas that quietly degrade things

    Priority: Should

    Free hosting plans hit their limits without a sound.

Keeping it running

  1. Uptime monitoring that checks the content

    Priority: Must

    You hear the site is down before your visitors tell you.

  2. Error logs you can still read next week

    Priority: Should

    Hosting logs vanish within hours; errors need a place that lasts.

  3. Form entries kept somewhere durable

    Priority: Must

    An inbox is not a database; entries kept only there get lost.

  4. Backups and content history

    Priority: Should

    One bad edit or a failed database must not take the content with it.

  5. Domain and certificate expiry

    Priority: Must

    A lapsed domain takes the site and its email with it.

  6. Changes that actually go live

    Priority: Should

    Automatic deploys can be skipped silently; know which version is live.

  7. A hosting plan that allows what the site does

    Priority: Should

    Free plans have rules: Vercel’s Hobby plan is non-commercial only.

  8. Who holds the keys

    Priority: Should

    The organisation owns its accounts, and knows who can get in.

Real-world failure modes

  1. In-app browsers: Instagram, Facebook, TikTok

    Priority: Should

    Links opened inside Instagram or TikTok break downloads and sign-ins.

  2. Automatic translation does not break the page

    Priority: Should

    Automatic translation can crash React pages for the readers who need it.

  3. The page can be read without JavaScript

    Priority: Should

    JavaScript fails more often than it seems; the text must not depend on it.

  4. Forced dark mode

    Priority: Nice to have

    Forced dark mode can leave dark text on a dark background.

  5. Slovene, Serbian and their details

    Priority: Should

    Slovene counts in four forms, Serbian has two scripts, and č stays č.

  6. Ad blockers and privacy browsers

    Priority: Nice to have

    Ad blockers stop third-party frames, so nothing essential may need one.

  7. Slow and old phones

    Priority: Nice to have

    Pages drawn in the browser crawl on old phones.

Content from visitors

  1. A way to report illegal content

    Priority: Must

    Where visitors publish, illegal content needs an easy way to be reported.

  2. A single point of contact

    Priority: Must

    The Digital Services Act asks for one published point of contact.

  3. A DMCA agent, if you are in the US or aim at it

    Priority: Must

    In the US, or aiming at it, uploads need a registered DMCA agent.

Who runs this site

  1. Provider details (imprint)

    Priority: Must

    Visitors and authorities need to know whom they are dealing with.

  2. Terms and conditions, when you need them

    Priority: Must

    Selling, accounts or publishing need terms, linked before the commitment.

  3. Say when visitors are talking to an AI

    Priority: Must

    People must be told when they are talking to an AI.

  4. EU funding shown the way the programme asks

    Priority: Nice to have

    EU-funded projects show the emblem the way their programme asks.