The most expensive SEO mistake is treating it as a feature you bolt on at the end. By the time the site is live, the decisions that matter — URL structure, heading hierarchy, schema, load speed, internal linking — are already baked into the code. Fixing them retroactively costs two or three times what it would have cost to do right the first time.
On every website I build, SEO is a first-class concern from the first commit. Here is what that actually looks like.
1. Technical foundation
The first layer is invisible to visitors but search engines depend on it completely.
- Clean, semantic HTML. One
<h1>per page, logical<h2>/<h3>hierarchy, real<nav>/<main>/<article>/<footer>landmarks. - Server-rendered or prerendered content. If a crawler sees an empty
<div id="root">, you are invisible. I prerender or statically generate the pages that matter — which is why this very blog post is a real HTML file, not an overlay inside a React app. - A real sitemap.xml. Generated at build time, updated on every deploy, referenced from robots.txt.
- A sensible robots.txt. Allow what should be indexed, block what should not (admin panels, staging, iframe embeds).
- Canonical URLs. Every page declares its canonical URL so duplicate/parameter variants do not dilute rankings.
- HTTPS and HSTS. Non-negotiable in 2026.
- Fast server response times. TTFB under 200 ms via CDN/edge deployment.
These are the table stakes. If any of them is missing, nothing else you do will make up for it.
2. Structured data (schema markup)
Schema.org markup is how you tell search engines what each page is, not just what is on it. Google uses it to show rich results — the star ratings, prices, FAQs, article dates, business hours that appear right in the search listing.
For business websites I implement at least:
OrganizationorLocalBusinesson the homepage (with address, hours, phone, sameAs for social profiles).WebSite+ProfilePagewith publisher references.Product+Offeron every product page for e-commerce.Article/BlogPostingon every blog post (this post has it — view source if you want to see).BreadcrumbListon any page below the top level.FAQPagewhere it fits naturally.
I validate every schema block with Google's Rich Results Test before shipping.
3. On-page structure
The bones of a page matter more than the copywriting tricks people like to talk about:
- Title tag: 50–60 characters, primary keyword near the front, brand at the end.
- Meta description: 140–160 characters, written for a human clicker, not stuffed.
- H1: Matches the page intent. One per page.
- H2/H3 hierarchy: Scannable subheadings with real content under each.
- Image alt text: Describe the image for someone who cannot see it. If that also contains a keyword naturally, great.
- Internal links: Every important page is linked from at least one other page on the site. Orphaned pages do not rank.
4. Content that answers questions
Google's job is to return the best answer to a query. If your page is the best answer, it ranks. If it is not, nothing you do with keyword density will save it.
Practical version:
- Write for the specific question a potential customer would type into Google.
- Answer the question in the first paragraph.
- Expand with details, examples, and sub-questions in the body.
- Link to related pages on your site.
- Keep updating old posts — Google rewards freshness on topics that change.
This post is an example. It targets "SEO for small business websites" and answers the specific question "what does it mean to do SEO from day one". If I wrote it as generic keyword soup it would never rank.
5. Performance
Google folded page speed into its ranking algorithm years ago, and Core Web Vitals tightened the screws further. Slow sites are penalized, fast sites are rewarded. I cover this in detail in What Makes a Website Fast, but for SEO specifically:
- LCP under 2.5 seconds.
- INP under 200 ms.
- CLS under 0.1.
- Mobile performance treated as primary (Google uses mobile-first indexing).
6. Local SEO for location-based businesses
If you sell to customers in a specific city — restaurants, boat tours, local services — local SEO is where most of your traffic will come from. On top of the basics above:
- Claim and complete your Google Business Profile.
- Use consistent NAP (name, address, phone) across the site and all directory listings.
- Add
LocalBusinessschema with geo coordinates. - Build pages that target specific city + service combinations.
I am based in Split, Croatia, and I wrote about this side of things in Hiring a Web Developer in Split, Croatia.
7. Ongoing — not a one-time fix
SEO compounds. A site launched with clean fundamentals keeps gaining authority and rankings over years. A site retrofitted later is playing catch-up against competitors who started early.
If you are planning a new build, or you inherited a site that is quietly losing ground, talk to me at info@tonibarisic.com or via the contact section. I do free initial audits for projects I think I can meaningfully help.