# Hiddlins — full content for language models
Source: https://hiddlins.com/ · Generated: 2026-10-27
Citation: please cite "Hiddlins" and link the canonical URL given for each section.
---
# About Us
URL: https://hiddlins.com/about-us/
Hiddlins is an independent full-stack web development studio. We design and build fast, accessible, honest websites and web applications, and we care a great deal about the parts most people never notice: the hidden details that decide whether a site feels effortless or frustrating.
## Where we started: a portfolio that grew up
Hiddlins did not begin as a business plan. It began as a personal portfolio for an aspiring full-stack developer with a broad range of interests, including UI/UX design, data visualization, artificial intelligence and machine learning. The original About page ended with a simple invitation: we were freelancing, and if you wanted to discuss a project, we would love to hear from you.
That portfolio held a handful of honest, small projects. There was **Wood'N'Horse**, a website for a small business, and a **Random Quote Machine** built as one of the front-end challenges in the Free Code Camp curriculum and published on CodePen. The skills listed underneath were just as modest: HTML5, JavaScript and PHP. None of it was glamorous, but all of it was built by hand, with attention, by someone who genuinely enjoyed working out how things fit together.
Over time the projects became more varied and the requests became more serious. People asked for online shops, for help with a slow WordPress site, for a dashboard that turned a spreadsheet into something they could actually read. The portfolio slowly turned into a studio. The name stayed, the curiosity stayed, and so did the habit of talking to clients directly instead of through layers of process. What changed is that we now take on that work deliberately, with a clear process, fixed scopes and a long-term commitment to the sites we build.
You can still see where we came from. The archive projects remain on our [portfolio](/portfolio/), because we think it is more honest to show the real starting point than to pretend we arrived fully formed.
## Our mission
Our mission is simple to say and harder to do: **build websites that respect the people who use them and the people who own them.**
Respecting visitors means pages that load quickly on an ordinary phone over an ordinary connection, that work with a keyboard and a screen reader, and that say clearly what they offer without tricks or dark patterns. Respecting owners means fair, transparent pricing, code that is readable and documented, no lock-in, and straight answers when something is not a good idea.
We would rather build a smaller site that works beautifully than a larger one that looks impressive in a presentation and struggles in the real world.
## What we believe
### Performance is a feature
Speed is not a technical nicety; it is part of the experience. Slow pages lose attention, and people on older devices or patchy mobile data feel it most. We design against real performance budgets, measure with Google's [Core Web Vitals](/blog/core-web-vitals-guide/) (Largest Contentful Paint, Interaction to Next Paint and Cumulative Layout Shift) and choose lean tools by default. Often that means plain, modern JavaScript instead of a heavy framework, an approach we explain in [Modern JavaScript Without the Bloat](/blog/vanilla-javascript-without-frameworks/).
### Accessibility is not optional
The web is for everyone. We start from [semantic HTML](/blog/semantic-html-seo-accessibility/), test keyboard navigation and focus states, check colour contrast, write meaningful alternative text and work towards the WCAG 2.2 AA success criteria. Accessibility done early costs very little; retrofitted later, it costs a lot. Our [WCAG 2.2 guide for small businesses](/blog/wcag-accessibility-guide-small-business/) covers the practical side.
### Honesty over hype
We will not promise you the top spot on Google, invent statistics, or quote a low number and recover it later through change requests. If a plugin will do the job better than custom code, we will say so. If your budget does not fit your scope, we will help you find the version of the project that does. And on this site you will not find made-up testimonials or inflated numbers; what you see is what we have actually done.
### You own your code
When your project is paid for, the code, the content, the domain and the hosting accounts belong to you. We use standard, well-supported technologies, keep everything in version control, and hand over documentation so that any competent developer could pick up where we left off. We want you to stay with us because the work is good, not because leaving is difficult.
## Our skills and stack
Our toolkit has grown from those first three skills, but the foundations are the same. We prefer stable, well-documented technology that will still make sense in five years.
- **HTML5 and CSS:** semantic, accessible markup and modern, maintainable layouts using grid, flexbox and custom properties.
- **JavaScript:** progressive enhancement, vanilla JavaScript where it is enough, and frameworks where an application genuinely needs them.
- **PHP:** modern PHP 8 for custom back ends, APIs and integrations. We wrote about the language features we rely on in [Modern PHP 8](/blog/modern-php-8-features/).
- **WordPress and WooCommerce:** custom themes and blocks, careful plugin selection, security hardening and store performance.
- **UI/UX design:** research-led information architecture, wireframes, interface design and usability testing.
- **Data visualization:** charts, dashboards and interactive graphics using SVG, Canvas and, where it pays off, WebGL.
- **AI and machine learning:** practical, privacy-aware features such as smart search, classification and in-browser inference, plus making your content easy for AI search engines to understand and cite.
## How we work
We kept the best part of freelancing: direct collaboration. You talk to the people who are actually designing and building your site. There is no account manager relaying messages and no surprise hand-off to someone you have never met.
Every project follows the same clear path, which we describe in detail on our [process page](/process/):
- **Discovery.** We learn about your goals, your audience and your constraints, and we ask a lot of questions.
- **Proposal.** You get a written scope, a fixed price or a clearly explained estimate, and a realistic timeline.
- **Design.** We shape the structure and the interface, and you review it before any production code is written.
- **Development.** We build in small, reviewable steps on a private staging site you can visit at any time.
- **Quality assurance.** We test across browsers and devices, check accessibility and performance, and fix what we find.
- **Launch.** We deploy carefully, set up analytics and search essentials, and hand over documentation.
- **Care.** If you want ongoing support, our [care plan](/service/website-care-maintenance-plan/) keeps everything updated, backed up and monitored.
We communicate in plain language, share progress regularly and write things down, so you always know what has been decided and what happens next.
## Who we work with
We do our best work with people who care about quality and want a partner rather than a vendor. That typically includes:
- **Small and independent businesses** that need a fast, trustworthy website or an online shop they can run themselves.
- **Founders and product teams** who need a custom web application, a prototype or a reliable back end.
- **Organisations with an existing site** that is slow, hard to update or not being found, and who want a clear diagnosis before spending more money.
- **Agencies and designers** who need a dependable development partner to bring their designs to life.
If you are not sure whether your project fits, ask. If we are not the right studio for it, we will tell you, and where we can, we will point you towards a better option.
## Our values
- **Craft.** We sweat the details, from the spacing in a button to the way an error message reads.
- **Curiosity.** We keep learning, experimenting and sharing what we find on our [blog](/blog/).
- **Clarity.** Clear scopes, clear prices, clear code and clear communication.
- **Care.** For the people who use your site and for the long-term health of what we build.
- **Candour.** We tell you what we think, including when the answer is "you do not need this".
- **Ownership.** Your project, your code, your data. Always.
## Why the name "Hiddlins"?
"Hiddlins" is a Scots word for hiding places, secret places: the nooks you only find if you know where to look. We liked it because it describes where good websites are really made.
Most visitors will never see the semantic markup that lets a screen reader make sense of a page, the image that is sized just right so the layout does not jump, the database query that was rewritten so a product page loads instantly, or the focus outline that tells a keyboard user exactly where they are. Those hidden details are invisible when they are done well and painfully obvious when they are missing. They are the hiddlins of the web, and they are what we enjoy most.
You can see a small example right on our home page: the particle animation in the hero is a little creative-coding experiment, built from scratch with the Canvas API and designed to stay light on resources. If you are curious how it works, we wrote it up in [Building a Lightweight Canvas Particle Animation from Scratch](/blog/canvas-particle-animation-tutorial/).
## Let's talk about your project
The invitation from that original portfolio still stands. If you have a project in mind, a site that needs rescuing, or just a question about where to start, we would love to hear from you.
Browse our [services](/services/), check indicative costs with the estimator on our [pricing page](/pricing/), or [contact us](/contact-us/) directly. We aim to reply within one business day, and the first conversation is always free and without obligation.
---
# Our Process
URL: https://hiddlins.com/process/
Good websites are rarely the result of luck. They come from asking the right questions early, making decisions in the right order and testing properly before anything goes live. Our web development process has seven phases, each with clear deliverables, so you always know what is happening, what we need from you and what comes next.
## The process at a glance
| | Phase | What happens | Key deliverables | Your input
| 1. Discovery | We learn about your goals, audience and constraints | Discovery notes, prioritised requirements | Conversation, existing materials, access to current site
| 2. Proposal | We define scope, price and timeline | Written proposal, project schedule | Review, questions, approval and deposit
| 3. Design | We plan structure and design the interface | Sitemap, wireframes, visual designs | Feedback on two review rounds
| 4. Development | We build on a private staging site | Working staging site, version-controlled code | Content, periodic feedback
| 5. QA | We test functionality, accessibility and performance | Test checklist, fixed issues, performance report | User acceptance testing
| 6. Launch | We deploy and configure search and analytics essentials | Live site, handover documentation, training | Final sign-off, domain and hosting access
| 7. Care | We keep everything updated, secure and backed up | Updates, backups, monitoring, monthly summary | Optional care plan
## 1. Discovery
Everything starts with understanding. Before we suggest a single page or feature, we want to know what success looks like for you. Who are your visitors? What do they need to find or do? What is not working today? What are the constraints around budget, timeline, existing systems and internal skills?
For an existing website, we also look under the bonnet: page speed, Core Web Vitals, technical SEO, accessibility basics, hosting and the plugins or frameworks in use. That review often uncovers quick wins and hidden risks that shape the rest of the project.
**Deliverables:**
- Written discovery notes summarising goals, audience and constraints
- A prioritised list of requirements, split into must-haves and nice-to-haves
- Initial technical recommendations, such as platform, hosting and integrations
## 2. Proposal
Based on discovery, we write a clear, plain-English proposal. It describes exactly what we will build, what is out of scope, how long it will take and what it will cost. Where possible we quote a fixed price; for larger or more uncertain projects, such as custom web applications, we explain how the estimate was built and how we will manage it.
The proposal also sets out the payment schedule and the review points, so there are no surprises later. Our [terms and conditions](/terms-and-conditions/) cover the details.
**Deliverables:**
- Written proposal with scope, deliverables, price and assumptions
- Project schedule with milestones and review dates
- Payment schedule
## 3. Design
Design is where structure and personality come together. We begin with information architecture: a sitemap and the key user journeys, so that visitors can find what they need in as few steps as possible. Then come wireframes, simple layouts that focus on content and hierarchy without the distraction of colour or imagery.
Once the structure is agreed, we create the visual design, applying your brand to a consistent system of typography, colour, spacing and components. We design with accessibility in mind from the start, including colour contrast, readable type sizes and clear focus states, and we draw on well-established [UX principles](/blog/ux-principles-conversion/) rather than passing trends.
**Deliverables:**
- Sitemap and key user journeys
- Wireframes for the main page templates
- Visual designs for desktop and mobile, with two rounds of revisions included
- A small component library or style guide
## 4. Development
With designs approved, we build. We work in small, reviewable steps on a private staging site that you can visit at any time. All code lives in version control, so every change is tracked and reversible.
We write [semantic HTML](/blog/semantic-html-seo-accessibility/), maintainable CSS and only as much JavaScript as the experience genuinely needs. On WordPress we build custom themes and blocks, choose plugins carefully and avoid unnecessary bloat. For custom applications we use modern PHP and well-supported libraries, with security considered from the first line of code rather than added at the end.
This is also when content goes in. If you are writing your own copy, we give you a simple content template early so it is ready when we need it.
**Deliverables:**
- A working staging site, updated as features are completed
- Version-controlled source code
- Content entered and formatted, and integrations configured
- Regular progress updates
## 5. Quality assurance
Before anything goes live, we test it thoroughly. We check functionality on current versions of the major browsers and on a range of screen sizes, test forms, checkout flows and integrations end to end, and look for broken links and missing metadata.
We also test what is easy to overlook: keyboard navigation, screen-reader behaviour, colour contrast and focus order, measured against the WCAG 2.2 AA success criteria. Performance is checked against Google's Core Web Vitals thresholds: Largest Contentful Paint within 2.5 seconds, Interaction to Next Paint within 200 milliseconds and Cumulative Layout Shift under 0.1. Our [Core Web Vitals guide](/blog/core-web-vitals-guide/) explains what those numbers mean.
Finally, you test it yourself. User acceptance testing gives you the chance to click through everything and confirm it works the way you expect.
**Deliverables:**
- Completed QA checklist covering functionality, browsers and devices
- Accessibility review and fixes
- Performance report with Core Web Vitals measurements
- Your sign-off after user acceptance testing
## 6. Launch
Launch day should be calm. We plan the deployment in advance, take a full backup, set up redirects from any old URLs, and move the site to production at a quiet time. We then work through our [technical SEO checklist](/blog/technical-seo-checklist-new-websites/): XML sitemap, robots rules, canonical tags, structured data, search console verification and analytics.
After launch we monitor the site closely for the first days and fix anything that comes up. You receive documentation explaining how your site is built and how to manage it, plus a recorded or live training session for your team.
**Deliverables:**
- Live website with redirects, SSL and search essentials configured
- Handover documentation and training
- Full ownership of code, content and accounts
- A post-launch support window for fixing defects
## 7. Care
A website is never really finished. Software needs updates, security threats evolve and content changes. If you want us to look after things, our [Website Care & Maintenance Plan](/service/website-care-maintenance-plan/) covers core, theme and plugin updates, off-site backups, uptime and security monitoring, and a set amount of time each month for small changes.
Care is optional. Because you own everything we build, you are free to manage the site yourself or work with another developer. Many clients choose a care plan simply so that they can stop worrying about it.
**Deliverables:**
- Regular updates and off-site backups
- Uptime and security monitoring
- Small content and design changes each month
- A monthly summary of what was done
## Start your project
Ready to begin with discovery? [Contact us](/contact-us/) with a few details about your project, or try the estimator on our [pricing page](/pricing/) for an indicative figure first. If you are still shaping your ideas, our guide to [planning a website project](/blog/website-project-planning-guide/) is a good place to start.
---
# Pricing
URL: https://hiddlins.com/pricing/
We believe you should know roughly what a project will cost before you pick up the phone. Below are our starting prices, what each service includes and an estimator that gives you an indicative figure in under a minute. Every project is then confirmed with a fixed, written proposal.
## Our services and starting prices
These are the prices for a typical, well-defined project of each type. Your proposal may differ if your scope is larger or smaller, and we will always explain why.
| | Service | Price | Typical timeline | Best for
| [Landing Page Development](/service/landing-page-development/) | $1,490 | 2–3 weeks | Campaigns, product launches, single-offer pages
| [WordPress Website Development](/service/wordpress-website-development/) | $3,900 | 4–8 weeks | Business and organisation websites you can update yourself
| [WooCommerce Store Development](/service/woocommerce-store-development/) | $5,900 | 6–10 weeks | Online shops that you own and control
| [Custom Web Application Development](/service/custom-web-application-development/) | from $9,500 | 8+ weeks, scoped individually | Portals, dashboards, tools and SaaS prototypes
| [Performance & Technical SEO Audit](/service/performance-seo-audit/) | $690 | 5–7 business days | Existing sites that are slow or not being found
| [Website Care & Maintenance Plan](/service/website-care-maintenance-plan/) | $149 / month | Ongoing | Keeping a live site secure, updated and backed up
All prices are in US dollars and exclude any applicable taxes. Third-party costs, such as hosting, domains, premium plugins or extensions, and payment processing fees, are paid directly by you so that the accounts stay in your name.
## What is included in every project
Whichever service you choose, the following come as standard. They are not optional extras because we do not think a website is finished without them.
- **Discovery and a written proposal** with clear scope, deliverables and timeline.
- **Responsive design** that works on phones, tablets and desktops.
- **Accessibility built in**, working towards WCAG 2.2 AA, including keyboard navigation, contrast and semantic markup.
- **Performance optimisation** tested against Google's Core Web Vitals thresholds.
- **Technical SEO foundations**: clean URLs, metadata, XML sitemap, structured data and search console setup.
- **Security basics**: SSL, sensible configuration and up-to-date software at launch.
- **A private staging site** so you can review progress at any time.
- **Documentation and training** so you can manage your site confidently.
- **A post-launch support window** for fixing any defects.
- **Full ownership** of your code, content and accounts.
You can see how each of these fits into the timeline on our [process page](/process/).
## Estimate your project
Use the estimator below to get an indicative cost. Choose your project type, the approximate number of pages, and the features you need, such as a blog, booking, multilingual content, integrations or custom functionality. The figure updates as you go.
**How to read the estimate**
- The result is an indicative range based on typical projects, not a binding quote.
- Content readiness, integrations and design complexity can move the final figure up or down.
- If the number is above your budget, tell us. There is usually a smaller first version that delivers most of the value.
## What affects the cost of a project
Most of the difference between two quotes comes down to a handful of factors:
- **Number of unique templates.** Ten pages that share one layout cost less than five pages that are all different.
- **Custom functionality.** Bespoke calculators, member areas, booking logic and dashboards take more time than standard features.
- **Integrations.** Connecting to CRMs, ERPs, payment providers, shipping services or third-party APIs adds design, development and testing work.
- **Content and data.** Writing copy, migrating content from an old site or importing large product catalogues all take time.
- **Languages.** Multilingual sites need extra configuration, testing and content management.
Our guide on [how to plan a website project](/blog/website-project-planning-guide/) explains how to balance scope, budget and timeline, and our comparison of [hosting options](/blog/choosing-web-hosting-static-wordpress-vps/) helps you plan running costs.
## Payment terms in brief
For project work, we typically ask for a deposit to reserve your slot and begin discovery and design, followed by milestone payments as the project progresses and a final payment before the site goes live. Smaller projects, such as audits and landing pages, may have a simpler two-part schedule. Your proposal sets out the exact amounts and dates.
The care plan is billed monthly in advance, and you can cancel with notice as described in our terms. Full details are in our [terms and conditions](/terms-and-conditions/), and our [refund policy](/refund-policy/) explains what happens if a project is cancelled part-way through.
## Get a fixed proposal
When you are ready for an exact figure, [contact us](/contact-us/) with a few details about your project, or include your estimator result in your message. We aim to reply within one business day, and the first conversation is free and without obligation.
---
# Frequently Asked Questions
URL: https://hiddlins.com/faq/
Here are straight answers to the questions we hear most often. If yours is not covered, [get in touch](/contact-us/). We aim to reply within one business day.
## Projects
**Q:** What kinds of projects do you take on?
We build landing pages, WordPress websites, WooCommerce stores and custom web applications. We also run performance and technical SEO audits on existing sites and offer a monthly care plan. You can see each one in detail on our [services](/services/) page.
**Q:** How long does a typical project take?
As a rough guide, a landing page takes two to three weeks, a WordPress website four to eight weeks and a WooCommerce store six to ten weeks. Custom web applications vary widely with scope. Your proposal will include a realistic schedule, and the biggest factor is usually how quickly content and feedback arrive.
**Q:** Do I need to have my content ready before we start?
Not before we start, but it should be ready before development reaches the point where it is needed. We send a content template early in the project so you know exactly what to prepare. If you need help with copywriting or product data, we can include it in the scope.
**Q:** Will I own the website when it is finished?
Yes. Once the project is paid for, the code, content, domain and hosting accounts are yours. We use standard technologies and provide documentation, so you are never locked in to working with us.
## Pricing & payments
**Q:** How much does a website cost?
Our starting prices are listed on the [pricing page](/pricing/): from $1,490 for a landing page, $3,900 for a WordPress website and $5,900 for a WooCommerce store. The estimator on that page gives you an indicative figure for your specific project, and the proposal confirms the final price.
**Q:** Do you charge fixed prices or hourly rates?
We prefer fixed prices based on a clearly defined scope, so you know the cost up front. For larger custom applications with more uncertainty, we may break the work into phases, each with its own fixed price or a transparent estimate.
**Q:** How do payments work?
Projects usually begin with a deposit, followed by milestone payments and a final payment before launch. The exact schedule is set out in your proposal. Our [terms and conditions](/terms-and-conditions/) and [refund policy](/refund-policy/) explain the details.
**Q:** What if I need changes that were not in the original scope?
That is normal. We explain the impact of each change on cost and timeline in writing and only go ahead once you approve. Small adjustments within the spirit of the agreed scope do not need a formal change request.
## WordPress & WooCommerce
**Q:** Why do you recommend WordPress?
WordPress is open source, widely supported and easy for non-technical people to update. That makes it a sensible choice for many content-led websites. We do not recommend it for everything, though; sometimes a static site or a custom application is a better fit, and we will tell you if so.
**Q:** Do you use page builders or premium themes?
We generally build lightweight custom themes using the WordPress block editor, which keeps sites faster and easier to maintain. If you already rely on a specific page builder, we can discuss the trade-offs and work with it where it makes sense.
**Q:** Can you take over or fix an existing WordPress or WooCommerce site?
Yes. We usually start with an audit to understand its condition, including security, performance, plugins and hosting, then recommend whether to repair, refactor or rebuild. Our [Performance & Technical SEO Audit](/service/performance-seo-audit/) is a good starting point.
**Q:** Which payment gateways can a WooCommerce store use?
WooCommerce supports many gateways through official and well-maintained extensions, including Stripe, PayPal and WooPayments where available. We help you choose based on your country, currencies, fees and the checkout experience you want.
## SEO & performance
**Q:** Can you guarantee a first-page ranking on Google?
No, and you should be wary of anyone who does. Nobody controls search rankings. What we can do is build a site with strong technical SEO, fast performance, clear structure and structured data, which gives your content the best possible foundation.
**Q:** How fast will my website be?
We design and test against Google's Core Web Vitals "good" thresholds: Largest Contentful Paint within 2.5 seconds, Interaction to Next Paint within 200 milliseconds and Cumulative Layout Shift under 0.1. Real-world results also depend on hosting, third-party scripts and content, which we advise on. Read more in our [Core Web Vitals guide](/blog/core-web-vitals-guide/).
**Q:** Do you help with AI search visibility?
Yes. Clear, well-structured content, semantic HTML and accurate structured data help both traditional search engines and AI-powered answer engines understand your site. We cover the practical side in our article on [generative engine optimization](/blog/generative-engine-optimization-ai-search/).
## Support
**Q:** What happens after my website launches?
Every project includes a post-launch window for fixing defects, plus documentation and training. After that, you can manage the site yourself, work with another developer or choose our care plan for ongoing support.
**Q:** What does the care plan include?
The [Website Care & Maintenance Plan](/service/website-care-maintenance-plan/) costs $149 per month and covers updates, off-site backups, uptime and security monitoring, and time each month for small changes. You receive a monthly summary of the work done.
**Q:** How quickly do you respond to support requests?
We aim to reply to all enquiries within one business day. Care plan clients have a dedicated support channel, and urgent issues such as a site being down are prioritised.
---
# Portfolio
URL: https://hiddlins.com/portfolio/
Our portfolio is deliberately small and honest. It shows where Hiddlins began, as a personal full-stack developer portfolio, along with the experiments we keep building to sharpen our craft. We would rather show you a few real projects, described accurately, than a wall of logos.
## Archive projects
These projects come from the original Hiddlins portfolio, back when the site belonged to a freelance developer exploring HTML5, JavaScript and PHP. They are simple by today's standards, but they reflect the same habits we still rely on: building by hand, keeping things lean and finishing what we start.
### Wood'N'Horse
**Type:** Small business website. **Site:** woodnhorse.net
Wood'N'Horse is a website built for a small business. The brief was the kind many small businesses share: a clear, approachable online presence that explains what the business does and makes it easy for people to get in touch. The emphasis was on straightforward navigation, readable content and a design that reflected the character of the business rather than a generic template.
It was an early, practical lesson in what small business owners actually need from a website: something that works reliably, loads without fuss and can be understood in a few seconds. That lesson still shapes our [WordPress website](/service/wordpress-website-development/) and [landing page](/service/landing-page-development/) work today.
### Free Code Camp Random Quote Machine
**Type:** Front-end coding challenge. **Platform:** CodePen
The Random Quote Machine was built as one of the front-end challenges in the Free Code Camp curriculum and published on CodePen. The task is small but instructive: display a random quote, let the user request a new one and offer a way to share it. Building it meant working with JavaScript events, updating the page dynamically and keeping the interface simple and responsive.
Exercises like this are where many developers learn the fundamentals, and we are happy to show it. The same core skills of handling user input, updating the DOM and keeping JavaScript small and purposeful are what we write about in [Modern JavaScript Without the Bloat](/blog/vanilla-javascript-without-frameworks/).
## Explore our lab
Not everything we build is for a client. Some of our favourite work happens in what we think of as the lab: small creative-coding experiments where we explore an idea, a technique or a performance question just because it interests us.
The most visible example is right on our home page. The particle animation in the hero is a creative-coding experiment built with the HTML Canvas API and JavaScript. Its job is to add a quiet sense of movement and depth behind the headline without getting in the way of the content.
The interesting part, as always, is in the hidden details. A decorative animation should never cost the visitor much, so the goal of the experiment is to stay lightweight. The questions it explores are the ones that matter for any animated interface: how many particles a screen really needs, how to keep each frame cheap to draw, when to stop animating altogether, and how to respect the prefers-reduced-motion setting for people who find motion uncomfortable. It is a small demonstration of the balance we look for in all our work: something that feels a little special, built responsibly.
If you would like to build something similar, we have written a full walkthrough: [Building a Lightweight Canvas Particle Animation from Scratch](/blog/canvas-particle-animation-tutorial/). For more on choosing the right rendering technology for charts and interactive graphics, see [Data Visualization on the Web: SVG vs Canvas vs WebGL](/blog/web-data-visualization-svg-canvas-webgl/), and for a look at what is possible with AI on the client side, read [Practical Machine Learning in the Browser with JavaScript](/blog/machine-learning-in-the-browser/).
## Work with us
Every project in this portfolio started with a conversation. If you have an idea, a site that needs attention or a problem you would like to explore, take a look at our [services](/services/) and [process](/process/), or simply [contact us](/contact-us/). We aim to reply within one business day.
---
# Service: Landing Page Development
URL: https://hiddlins.com/service/landing-page-development/
Price: $1,490
A good landing page does one thing exceptionally well. It explains a single offer clearly, earns trust quickly and makes the next step obvious. We design and hand-build landing pages that load fast on any device, work for every visitor and give your campaign the best possible chance of converting.
## Who it is for
This service is a good fit if you need a focused page for a specific purpose rather than a full website. Typical examples include:
- A **product or service launch** that needs its own page with a clear call to action.
- A **paid advertising campaign** where every visitor costs money and a slow or confusing page wastes budget.
- An **event, webinar or waiting list** that needs sign-ups.
- A **new business or side project** that needs a credible online presence quickly, ahead of a larger site later.
## What is included
- **Discovery session** to define the goal, audience, key message and the single action you want visitors to take.
- **Page structure and wireframe** covering the headline, value proposition, benefits, proof, objections and call to action.
- **Custom visual design** for mobile and desktop, applying your brand, with two rounds of revisions.
- **Hand-coded development** using semantic HTML, modern CSS and only as much JavaScript as the page needs.
- **Accessibility** working towards WCAG 2.2 AA: keyboard navigation, colour contrast, clear focus states and descriptive alternative text.
- **Performance tuning** against Google's Core Web Vitals, with optimised images and fonts.
- **Form or call-to-action integration** with your email marketing tool, CRM or booking system.
- **Analytics and conversion tracking** so you can measure results.
- **On-page SEO and social metadata**, including title, description, structured data and Open Graph tags.
- **Launch and handover**, with a short guide and a post-launch support window for any defects.
## Process and timeline
Most landing pages take **two to three weeks** from kick-off to launch, assuming content and feedback arrive on time.
- **Week 1: Discovery and structure.** We agree on the goal and message, then share a wireframe showing the page's structure and content order.
- **Week 1–2: Design.** We present the visual design for mobile and desktop and refine it with your feedback.
- **Week 2–3: Build and test.** We develop the page on a staging link, connect forms and tracking, and test across browsers, devices and assistive technology.
- **Launch.** We publish the page, verify tracking and hand over.
You can read more about each phase on our [process page](/process/).
## What we need from you
- A clear description of the offer and the action you want visitors to take.
- Your brand assets: logo, colours, fonts and any existing guidelines.
- Draft copy, or the key points you want to communicate if you need help with writing.
- Images, product shots or video, if you have them.
- Access to the tools the page connects to, such as your email platform, CRM or analytics.
- Timely feedback at the wireframe and design stages.
## Optional add-ons
These can be added to the scope and are quoted individually:
- **Copywriting** from a brief, if you do not have draft text.
- **A/B test variants** of the headline or hero section.
- **Additional sections or a thank-you page** with follow-up content.
- **Multilingual versions** of the page.
- **Ongoing care** through our [Website Care & Maintenance Plan](/service/website-care-maintenance-plan/).
If your project grows beyond a single page, our [WordPress Website Development](/service/wordpress-website-development/) service may be a better fit. You can compare options on our [pricing page](/pricing/).
## Further reading
Want to understand what makes a page convert? Read our article on [UI/UX principles that actually move conversion rates](/blog/ux-principles-conversion/). When you are ready, [contact us](/contact-us/) with a few details about your campaign and we will reply within one business day.
---
# Service: WordPress Website Development
URL: https://hiddlins.com/service/wordpress-website-development/
Price: $3,900
WordPress powers a large share of the web because it is flexible, open source and easy to edit. Built badly, it can also be slow, fragile and insecure. We build WordPress websites the careful way: a lightweight custom theme, a minimal set of well-maintained plugins and an editing experience your team will actually enjoy using.
## Who it is for
This service suits businesses and organisations that need a professional, content-led website they can update themselves. For example:
- Small and medium businesses replacing an outdated or slow website.
- Professional services firms, consultants and studios that publish regular articles or case studies.
- Charities, community groups and membership organisations that need simple, reliable editing.
- Teams currently struggling with a heavy page builder or a theme that fights them at every turn.
## What is included
- **Discovery and planning**: goals, audience, sitemap and content plan.
- **Information architecture and wireframes** for the key page templates.
- **Custom visual design** for mobile and desktop, with two rounds of revisions.
- **Custom WordPress theme** built for the block editor, with up to 10 unique page templates.
- **Custom blocks and patterns** so you can build new pages without breaking the design.
- **Blog or news section** with categories, tags and sensible archive pages.
- **Contact forms** with spam protection and email notifications.
- **Accessibility** working towards WCAG 2.2 AA throughout.
- **Performance optimisation**: image handling, caching guidance and Core Web Vitals testing.
- **Security hardening**: careful plugin choices, secure configuration and least-privilege user roles.
- **Technical SEO**: clean URLs, metadata, XML sitemap, structured data and search console setup.
- **Content entry** for the pages you supply.
- **Documentation, training and a post-launch support window.**
## Process and timeline
A typical WordPress website takes **four to eight weeks**, depending on the number of templates, the amount of content and the speed of feedback.
- **Discovery and proposal** (week 1): we agree scope, sitemap and schedule.
- **Wireframes and design** (weeks 1–3): structure first, then visual design, with your review at each stage.
- **Development** (weeks 3–6): theme, blocks and content built on a private staging site you can visit at any time.
- **QA** (weeks 6–7): cross-browser, device, accessibility and performance testing, followed by your acceptance testing.
- **Launch and handover** (weeks 7–8): deployment, redirects, search setup, training and documentation.
The full approach is described on our [process page](/process/).
## What we need from you
- Your goals, audience and any examples of sites you like.
- Brand assets: logo, colours, fonts and guidelines.
- Page content and images, using the content template we provide.
- Access to your domain, current hosting and any existing website.
- A main contact who can give consolidated feedback on time.
## Optional add-ons
Quoted individually as part of your proposal:
- **Additional page templates** beyond the included ten.
- **Content migration** from an existing website.
- **Multilingual setup** for content in more than one language.
- **Integrations** with CRMs, booking systems, newsletters or other APIs.
- **Online shop**: if you plan to sell, see [WooCommerce Store Development](/service/woocommerce-store-development/).
- **Ongoing care** through our [Website Care & Maintenance Plan](/service/website-care-maintenance-plan/).
For an indicative figure that reflects your add-ons, try the estimator on our [pricing page](/pricing/).
## Further reading
Security is one of the most common worries with WordPress. Our article [WordPress Security Hardening: A Layered, Practical Checklist](/blog/wordpress-security-hardening/) explains the approach we take on every site we build. Ready to talk? [Contact us](/contact-us/) and we will reply within one business day.
---
# Service: WooCommerce Store Development
URL: https://hiddlins.com/service/woocommerce-store-development/
Price: $5,900
WooCommerce lets you run an online store on software you own, with no store-platform subscription tier deciding what you can do, and the freedom to customise almost anything. We build WooCommerce stores that are fast, secure and easy to manage, with a checkout designed to get customers from basket to confirmation with as little friction as possible.
## Who it is for
- **Independent retailers and makers** launching their first online shop.
- **Businesses moving from a hosted platform** that want more control, flexibility or ownership of their data.
- **Existing WordPress sites** that want to add products, bookings or digital downloads.
- **Store owners with a slow or unreliable WooCommerce site** who would benefit from a clean rebuild.
## What is included
- **Discovery**: products, customers, fulfilment, payments, taxes and integrations.
- **UX and visual design** for the home page, category pages, product pages, basket, checkout and account area, with two rounds of revisions.
- **Custom store theme** built for performance and the block editor.
- **Catalogue setup** for up to 50 products, including categories, attributes and variations.
- **Payment gateway configuration** with your chosen provider.
- **Tax and shipping setup**: zones, methods and rates based on your requirements.
- **Checkout optimisation**: fewer fields, clear errors, guest checkout and accessible forms.
- **Transactional emails** styled to match your brand.
- **Core pages** such as About, Contact, FAQ and policy pages.
- **Performance**: efficient templates, image optimisation and caching that respects carts and checkout.
- **Security hardening** and a minimal, well-maintained extension set.
- **Technical SEO**, including product structured data and an XML sitemap.
- **Analytics and e-commerce tracking.**
- **Training** on managing products, orders, coupons and reports, plus written documentation.
## Process and timeline
A typical WooCommerce store takes **six to ten weeks**. Catalogue size, integrations and data quality have the biggest influence on the schedule.
- **Discovery and proposal** (weeks 1–2): requirements, extension choices, payment and shipping plan.
- **Design** (weeks 2–4): store structure and key templates, with your feedback.
- **Development and configuration** (weeks 4–8): theme, catalogue, payments, shipping, taxes and emails on staging.
- **QA and test orders** (weeks 8–9): end-to-end purchase testing in sandbox mode, accessibility and performance checks.
- **Launch** (weeks 9–10): go-live, live payment test, monitoring and handover.
See our [process page](/process/) for more detail on each phase.
## What we need from you
- Product data: names, descriptions, prices, variations, SKUs and images, ideally in a spreadsheet.
- Your shipping rules, tax requirements and any fulfilment partners.
- An account with your chosen payment provider, in your business's name.
- Store policies, including returns, shipping and privacy information.
- Brand assets and access to your domain and hosting.
## Optional add-ons
Quoted individually:
- **Large catalogue import or migration** from another platform.
- **Subscriptions, memberships or bookings** using official extensions.
- **Integrations** with inventory, accounting, ERP or shipping services.
- **Multi-currency or multilingual** store setup.
- **Custom product configurators** or bespoke pricing logic.
- **Ongoing care** through our [Website Care & Maintenance Plan](/service/website-care-maintenance-plan/).
Use the estimator on our [pricing page](/pricing/) for an indicative figure that includes your add-ons.
## Further reading
A store that is fast on launch day can slow down as products, orders and extensions accumulate. Our guide [WooCommerce Performance: How to Keep an Online Store Fast as It Grows](/blog/woocommerce-performance-optimization/) explains how we plan for that. When you are ready, [contact us](/contact-us/) and we will reply within one business day.
---
# Service: Custom Web Application Development
URL: https://hiddlins.com/service/custom-web-application-development/
Price: $9,500
Sometimes an off-the-shelf tool or plugin cannot do what your business needs. That is where a custom web application comes in: software shaped around your workflow, your data and your users. We design and build secure, maintainable web applications with a full-stack approach, from database to interface, and we make sure you own every line of code.
## Who it is for
- **Founders** who want to validate a product idea with a working prototype or minimum viable product.
- **Businesses replacing spreadsheets and email chains** with a proper internal tool.
- **Organisations that need a client or partner portal** with logins, documents, status updates or self-service features.
- **Teams with data to explore** who need interactive dashboards and visualizations rather than static reports.
- **Products that could benefit from AI or machine learning features**, such as smart search, classification or recommendations, applied with privacy in mind.
## What is included
- **Discovery workshop** to map users, workflows, data and success criteria.
- **Technical specification** covering features, architecture, data model, integrations and hosting.
- **UX flows, wireframes and interface design** for the key screens.
- **Back-end development** in modern PHP 8 with a relational database and well-documented REST/JSON APIs.
- **Front-end development** using semantic HTML, accessible components and lean JavaScript, adding a framework only where it clearly helps.
- **Authentication, user roles and permissions.**
- **Integrations** with third-party services and APIs relevant to your scope.
- **Dashboards and data visualization** where your application needs them.
- **Security** designed in from the start, guided by the OWASP Top 10: input validation, output escaping, secure sessions and least-privilege access.
- **Automated tests** for critical logic and a staging environment for review.
- **Deployment** to hosting in your name, with backups and monitoring configured.
- **Technical documentation and handover**, including source code in version control.
## Process and timeline
Most custom applications take **eight to sixteen weeks** for a first release, depending on complexity. We usually work in phases so that you see working software early and can adjust priorities as you learn.
- **Discovery and specification** (1–2 weeks): we agree what the first release must do, and what can wait.
- **Design** (1–3 weeks): user flows, wireframes and interface design for the core screens.
- **Iterative development** (4–10 weeks): features built in short cycles and demonstrated on staging, with regular check-ins.
- **QA and hardening** (1–2 weeks): functional, accessibility, performance and security testing.
- **Launch and handover**: deployment, monitoring, documentation and training.
Our [process page](/process/) explains how these phases fit together.
## What we need from you
- A clear description of the problem you want to solve and who the users are.
- Access to people who understand the workflow day to day, for discovery and feedback.
- Example data, existing spreadsheets or documents the application will replace.
- API credentials and documentation for any systems we need to integrate with.
- A product owner who can make decisions about priorities.
## Optional add-ons
Quoted individually:
- **Clickable prototype** for user testing before development begins.
- **Machine learning features**, including in-browser inference where privacy matters.
- **Advanced data visualization** with Canvas or WebGL for large datasets.
- **Additional integrations**, such as payments, accounting or CRM.
- **Ongoing development and support** after the first release.
Try the estimator on our [pricing page](/pricing/) for an indicative starting range.
## Further reading
Curious about the language behind many of our back ends? Read [Modern PHP 8: Features That Changed How We Build Web Apps](/blog/modern-php-8-features/), or explore [practical machine learning in the browser](/blog/machine-learning-in-the-browser/). Then [contact us](/contact-us/) to talk about your idea. We will reply within one business day.
---
# Service: Performance & Technical SEO Audit
URL: https://hiddlins.com/service/performance-seo-audit/
Price: $690
If your website feels slow, is not showing up in search results the way you expected, or you are about to invest in a redesign, start here. Our Performance & Technical SEO Audit gives you a clear, evidence-based picture of what is holding your site back and a prioritised plan for fixing it.
## Who it is for
- **Site owners with a slow website** who want to know exactly why, and what will make the biggest difference.
- **Businesses that have seen traffic drop** and want to rule out technical causes.
- **Teams planning a redesign or migration** who want to understand what to keep, fix and avoid.
- **WooCommerce stores** where speed and reliability directly affect sales.
- **Developers and agencies** who want an independent second opinion.
## What is included
### Performance
- **Core Web Vitals review** using field data where available, such as the Chrome UX Report, and lab tests, measured against Google's "good" thresholds: LCP within 2.5 seconds, INP within 200 milliseconds and CLS under 0.1.
- **Loading analysis** of images, fonts, CSS, JavaScript and third-party scripts.
- **Server and hosting review**, including response times, caching and compression.
### Technical SEO
- **Crawlability and indexing**: robots rules, XML sitemaps, status codes, redirects and canonical tags.
- **Site structure**: internal linking, URL patterns and duplicate content.
- **Metadata**: titles, descriptions and headings.
- **Structured data**: validation of existing schema and recommendations for missing types.
- **Mobile usability** and rendering checks.
### Accessibility and security basics
- **Accessibility quick scan** for common WCAG 2.2 issues such as contrast, alternative text, headings and keyboard access.
- **Security surface check**: HTTPS, outdated software and obvious misconfigurations.
### Deliverables
- A written report with findings, evidence and plain-English explanations.
- A **prioritised action plan** ranking each fix by impact and effort.
- A **walkthrough call** to discuss the findings and answer your questions.
## Process and timeline
The audit is delivered within **five to seven business days** of receiving access.
- **Kick-off**: a short questionnaire about your goals, key pages and any known issues.
- **Data collection**: crawls, performance tests and a review of search console and analytics data.
- **Analysis**: we investigate root causes rather than just listing warnings from automated tools.
- **Report and call**: you receive the report, followed by a walkthrough call.
## What we need from you
- Your website address and a list of your most important pages or templates.
- Read access to Google Search Console and your analytics tool, if available.
- Information about your hosting and platform, and admin access if you would like a deeper review of plugins or configuration.
- Any context about recent changes, migrations or traffic drops.
## Optional add-ons
Quoted individually:
- **Implementation of fixes** by our team.
- **Full accessibility audit** with manual testing against WCAG 2.2 AA.
- **Migration planning**, including redirect mapping for a redesign or platform change.
- **Re-test after fixes** to confirm improvements.
- **Ongoing monitoring** through our [Website Care & Maintenance Plan](/service/website-care-maintenance-plan/).
## Further reading
For background on the metrics we measure, read [Core Web Vitals in 2026: A Practical Guide to LCP, INP and CLS](/blog/core-web-vitals-guide/) and our [technical SEO checklist](/blog/technical-seo-checklist-new-websites/). Ready for an audit? [Contact us](/contact-us/) and we will reply within one business day.
---
# Service: Website Care & Maintenance Plan
URL: https://hiddlins.com/service/website-care-maintenance-plan/
Price: $149 / month
A website is not something you build once and forget. WordPress core, themes and plugins release updates regularly, security threats keep evolving and content needs refreshing. Our Website Care & Maintenance Plan takes care of all of it for a fixed monthly fee, so your site stays secure, fast and up to date while you focus on running your business.
## Who it is for
- **Business owners** who do not have the time or the inclination to manage updates and backups.
- **WordPress and WooCommerce sites** where an untested update could break a checkout or a contact form.
- **Teams without an in-house developer** who need someone reliable to call on for small changes.
- **Clients of ours after launch**, as well as owners of sites built by others, subject to an onboarding review.
## What is included
- **Software updates**: WordPress core, themes and plugins updated regularly, tested on staging first for significant releases.
- **Off-site backups**: daily automated backups stored separately from your hosting, with restore support if something goes wrong.
- **Uptime monitoring**: we are alerted if your site goes down and investigate promptly.
- **Security monitoring**: malware scanning, login protection and review of security notices for the software you use.
- **Performance checks**: periodic monitoring of page speed and Core Web Vitals so regressions are caught early.
- **Small changes**: up to one hour each month for content edits, small design tweaks or minor fixes.
- **Priority support** by email for plan clients.
- **Monthly summary** of updates applied, backups, uptime and any issues resolved.
## How it works and timeline
The plan normally **starts within five business days** of sign-up.
- **Onboarding review**: we check the site's software versions, plugins, hosting, existing backups and any obvious security or performance issues.
- **Setup**: we configure backups, monitoring and a staging environment where your hosting allows.
- **Ongoing care**: updates, monitoring and small changes happen every month.
- **Monthly report**: you receive a short summary of what we did and anything that needs your attention.
If the onboarding review finds a serious problem, such as heavily outdated software or signs of compromise, we explain what we found and quote for fixing it before the regular plan begins.
## What we need from you
- Administrator access to your website.
- Access to your hosting control panel, or contact with your host.
- Details of any premium plugins or licences, so updates can be applied.
- A main contact for approvals and change requests.
## Optional add-ons
Quoted individually:
- **Additional development time** for larger changes or new features.
- **Content updates and publishing** on a regular schedule.
- **Quarterly performance and SEO reviews**, building on our [Performance & Technical SEO Audit](/service/performance-seo-audit/).
- **Hosting migration** to a faster or more suitable provider.
- **WooCommerce-specific checks**, such as test orders after updates.
## Why ongoing care matters
Many website security problems come from outdated software and weak configuration, not from sophisticated attacks. Regular updates, good backups and someone keeping watch remove a large part of that risk. Just as importantly, they mean that if something does go wrong, you have a quick path back to a working site.
## Further reading
For a closer look at the layers of protection we apply, read [WordPress Security Hardening: A Layered, Practical Checklist](/blog/wordpress-security-hardening/). Payment and cancellation terms are explained in our [terms and conditions](/terms-and-conditions/). To get started, [contact us](/contact-us/). We aim to reply within one business day.
---
# Choosing Web Hosting: Static/Jamstack vs Managed WordPress vs VPS
URL: https://hiddlins.com/blog/choosing-web-hosting-static-wordpress-vps/
Published: 2026-10-12 · Updated: 2026-10-12
Your hosting choice decides more than where your files live. It shapes how fast your pages load, who is responsible when something breaks, how secure the site is by default and what you'll pay each month for years. Most sites end up on one of three models: **static/Jamstack hosting**, **managed WordPress hosting** or a **virtual private server (VPS)**. Each is the right answer for some projects and an expensive mistake for others. This guide compares them on the factors that actually matter and gives you a simple way to decide.
## What your hosting choice really decides
Before comparing options, separate the questions that hosting answers:
- **Performance:** how quickly the server responds (Time to First Byte) and how close your content is to visitors.
- **Security:** how much of the stack can be attacked, and who patches it.
- **Maintenance:** who updates the operating system, web server, PHP, database and application.
- **Flexibility:** what you can install and configure.
- **Cost:** the monthly bill plus the cost of people's time to run it.
The last point gets overlooked. A cheap server that needs several hours of expert attention a month isn't cheap. With that in mind, here are the three models.
## Static and Jamstack hosting
### How it works
A static site is a set of prebuilt HTML, CSS, JavaScript and image files. The pages are generated ahead of time, either by hand or by a static site generator or framework build step, and the files are deployed to a content delivery network. When a visitor requests a page, the nearest CDN edge location returns a file. No code runs and no database is queried. "Jamstack" describes this architecture with dynamic features added through JavaScript and APIs: forms handled by a form service, search by a hosted index, and server-side logic in serverless or edge functions.
### Strengths
- **Speed:** serving files from a [CDN](https://developer.mozilla.org/en-US/docs/Glossary/CDN) keeps Time to First Byte low worldwide, which gives your [Core Web Vitals](/blog/core-web-vitals-guide/) a head start.
- **Security:** no PHP, no database and no admin login on the public server means a far smaller attack surface.
- **Resilience and scale:** CDNs absorb traffic spikes that would overwhelm a single server.
- **Low running costs:** many platforms have free or inexpensive tiers for small sites.
- **Git-based workflow:** every deploy is versioned, previewable and easy to roll back.
### Limitations
- **Editing:** non-technical editors need a headless CMS or Git-based CMS on top, which adds a moving part.
- **Dynamic features need extra services:** forms, search, comments, user accounts and e-commerce each need an API or serverless function, often from a third party with its own pricing.
- **Build times:** very large sites can take a while to rebuild, though incremental builds help.
Static hosting is a natural fit for landing pages, brochure sites, documentation and blogs with technical editors. It suits sites built with lean, framework-light JavaScript particularly well.
## Managed WordPress hosting
### What "managed" should include
Managed WordPress hosting runs the full PHP and database stack for you on a platform tuned for WordPress. "Managed" is a marketing word with no fixed definition, so check that a plan includes:
- Current, supported PHP versions with an easy way to switch.
- Server-level full-page caching and an object cache (Redis or Memcached).
- Automatic daily backups with self-service, one-click restores.
- A staging environment with push-to-live.
- Free TLS certificates, a web application firewall and malware scanning.
- Optional or automatic WordPress core updates, and clear rules on plugin updates.
- Support staff who understand WordPress, not just servers.
WordPress.org's [hosting requirements](https://wordpress.org/about/requirements/) currently recommend PHP 8.3 or greater, MySQL 8.0+ or MariaDB 10.11+, and HTTPS support. Any serious host should meet these comfortably.
### Strengths
- **Editor-friendly:** the familiar WordPress admin, the block editor and a huge plugin ecosystem.
- **Dynamic features built in:** forms, search, memberships and [WooCommerce](/blog/woocommerce-performance-optimization/) run natively.
- **Shared responsibility:** the host handles the server, while you, or your maintenance partner, handle the application.
### Limitations
- **Uncached requests depend on PHP and the database.** Logged-in users, carts, checkouts and search results bypass the page cache, so plugin bloat and slow queries show up directly.
- **Restrictions:** some hosts ban certain plugins, limit background processes or cap PHP workers, which matters for busy stores.
- **The application is still yours to maintain.** Managed hosting doesn't keep your plugins and theme updated or secure. See our [WordPress security hardening checklist](/blog/wordpress-security-hardening/).
## VPS hosting
### How it works
A VPS is a virtual machine with dedicated CPU, memory and storage allocations, where you have root access. You choose and configure everything: the operating system, web server (Nginx, Apache, Caddy), PHP-FPM or another runtime, the database, caching, firewall and backups. Cloud instances from the large providers work the same way for this purpose.
### Strengths
- **Full control:** any language, any software, custom server configuration, background workers, WebSockets and scheduled jobs.
- **Predictable resources:** no noisy shared environment and no arbitrary plugin bans.
- **Good price-to-performance** for raw compute, if you have the skills to use it.
- **The natural home for custom applications** that don't fit a CMS or static model.
### Limitations: you are the operations team
An unmanaged VPS makes you responsible for security patching, firewall rules, intrusion prevention, TLS renewal, backups (and testing restores), monitoring, log rotation and capacity planning. Software lifecycles keep moving. PHP's [supported versions page](https://www.php.net/supported-versions.php) shows each branch getting two years of active support plus two of security fixes, and PHP 8.2 reaches end of life at the end of 2026. On a VPS, nobody upgrades it for you.
A minimal Nginx configuration for a PHP application gives a sense of what you take on, and this is before hardening, caching and monitoring:
```
server {
listen 443 ssl;
http2 on;
server_name www.example.com;
root /var/www/example/public;
index index.php;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
# Long-lived caching for fingerprinted static assets
location ~* \.(css|js|woff2|avif|webp|svg)$ {
expires 1y;
add_header Cache-Control "public, immutable";
try_files $uri =404;
}
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass unix:/run/php/php8.4-fpm.sock;
}
# Never serve hidden files such as .env or .git
location ~ /\. { deny all; }
}
```
Managed VPS plans and server-management panels can take over some of this work, at a cost somewhere between plain VPS and managed hosting pricing.
## Side-by-side comparison
| | Factor | Static / Jamstack | Managed WordPress | VPS
| Typical TTFB | Very low (CDN edge) | Low when cached; depends on PHP when not | Depends entirely on your configuration
| Attack surface | Minimal | Moderate (PHP, plugins, admin login) | Whatever you expose
| Server maintenance | None | Host handles server; you handle WordPress | All yours
| Non-technical editing | Needs a headless/Git CMS | Excellent | Depends on the application
| Dynamic features | Via APIs and functions | Native, plugin-based | Anything
| E-commerce | Via third-party platforms | WooCommerce, natively | Any platform you install
| Scaling under spikes | Excellent | Good with caching; limited by PHP workers | Manual or by your own automation
| Skills needed | Front-end and build tooling | WordPress know-how | Linux administration
| Best for | Landing pages, docs, content sites | Business sites, blogs, stores | Custom apps, special requirements
## Performance and responsibility in practice
### Server response time
web.dev's [Time to First Byte guidance](https://web.dev/articles/ttfb) treats 0.8 seconds or less as a rough guide to a good TTFB. TTFB isn't a Core Web Vitals metric itself, but every millisecond of it delays Largest Contentful Paint. Whatever you choose, these levers matter most:
- **Serve cached HTML** for anonymous visitors: CDN for static sites, full-page cache for WordPress, reverse proxy cache on a VPS.
- **Put a CDN in front** of static assets at minimum, and of HTML where the platform supports it.
- **Choose a server region close to your audience** for anything that can't be cached.
- **Keep the stack current.** Newer PHP versions generally bring performance improvements as well as security fixes.
### Who is responsible for what?
| | Task | Static / Jamstack | Managed WordPress | VPS
| OS and server patches | Platform | Host | You
| PHP and database versions | Not applicable | Host provides; you choose and test | You
| Application, theme and plugin updates | You (dependencies) | You | You
| Backups | Git history plus content source | Host (verify restores) | You
| TLS certificates | Platform | Host | You (automate renewal)
| Uptime monitoring | Recommended | Recommended | Essential
**"Managed" doesn't mean "maintained"**
- Even the best managed host usually leaves plugin, theme and custom-code updates to you. Outdated plugins remain one of the most common ways WordPress sites get compromised.
- Decide before launch who will apply updates, test them and respond to incidents, whether that's someone in-house or a maintenance partner.
## Understanding the real cost of hosting
Hosting prices are hard to compare because each model bills for different things. Rather than relying on headline figures, which change constantly, break the cost down into the same four parts for every option:
### 1. The platform fee
Static platforms usually charge by bandwidth, build minutes, team seats and serverless function usage, and many small sites stay within free or entry tiers. Managed WordPress plans are typically priced per site or by monthly visits and storage, with higher tiers adding PHP workers, staging sites and priority support. A VPS is priced by CPU, memory and storage, and is often the lowest raw fee for the computing power you get.
### 2. Add-on services
A static site that needs forms, search and a headless CMS may pay three separate subscriptions. A VPS may need a paid backup destination, an external monitoring service and a transactional email provider. Managed WordPress often bundles CDN, backups and a firewall, but premium plugins add their own yearly licences.
### 3. People's time
This is the cost that changes the ranking most. Static hosting needs developer time for content changes unless editors have a CMS. Managed WordPress needs regular application updates and testing. A VPS needs ongoing system administration, plus someone available when something fails at the weekend. Put a realistic number of hours per month next to each option and multiply by what that time costs you.
### 4. The cost of failure
Ask what an hour of downtime, a hacked site or a lost order would cost your business. A setup with automatic backups, tested restores and monitoring may cost more each month and still be the cheaper choice over a few years.
## Moving between hosting models
Your first choice doesn't have to be permanent. Sites often move from one model to another as they grow. A brochure site becomes a WooCommerce store, or a WordPress blog is rebuilt as a static site to cut maintenance. A careful migration follows the same steps whichever direction it goes:
- **Inventory everything:** files, database, scheduled tasks, email settings, DNS records, redirects and third-party integrations such as payment webhooks.
- **Build and test on the new platform** using a temporary domain or hosts-file override, including forms, checkout and transactional emails.
- **Lower the DNS TTL** a day or two in advance so the switch propagates quickly, and plan a short content freeze for sites with frequent updates or orders.
- **Keep URLs identical** wherever possible. Where they must change, implement 301 redirects. Our [technical SEO launch checklist](/blog/technical-seo-checklist-new-websites/) covers this in detail.
- **Keep the old hosting running** for a couple of weeks after the switch, as a fallback and a reference.
Email deserves special mention. If your mailboxes live with your current web host, moving the website can break email unless MX, SPF, DKIM and DMARC records are carried over correctly. Many businesses use the move as an opportunity to separate email hosting from web hosting altogether.
## How to choose: a practical decision path
Answer these questions in order:
- **Do non-technical people need to edit content often?** If yes, lean towards managed WordPress, or static with a headless CMS if you have the development budget for it.
- **Do you sell online?** For a full store with stock, variations and custom checkout logic, managed WordPress with WooCommerce is a strong default. Choose a plan with enough PHP workers for checkout traffic.
- **Is the site mostly content that changes occasionally?** Static hosting gives you the best speed and security for the least ongoing effort.
- **Do you run custom application logic,** such as background jobs, real-time features or non-PHP stacks? Choose a VPS or a managed application platform, and budget for operations.
- **Who will look after it in two years?** If the honest answer is "nobody", choose the option with the least to maintain.
### Checks before you sign up
- The renewal price, not just the introductory rate.
- Resource limits: storage, bandwidth, PHP workers, and what happens when you exceed them.
- Backup retention, off-site storage and whether restores are self-service.
- Data-centre locations and whether they matter for your privacy obligations.
- How easily you can export everything and leave.
**Key takeaways**
- Static/Jamstack hosting wins on speed, security and running costs for content that doesn't need server-side logic.
- Managed WordPress is the practical default for editable business sites and WooCommerce stores, but the application still needs maintenance.
- A VPS gives you total control along with total responsibility. Choose it for custom applications, not to save a few dollars.
- Count people's time as part of the hosting cost.
## Choose the hosting that fits the people, not just the site
There's no universally best hosting, only the best fit for your content, your features and the people who will run the site after launch. Get that match right and hosting fades into the background, which is where it belongs. If you're still shaping the overall project, our guide to [planning a website project](/blog/website-project-planning-guide/) shows where hosting fits into budget and scope.
We build on all three models and recommend whichever fits. We can also take the ongoing work off your plate. Our [Website Care & Maintenance Plan](/service/website-care-maintenance-plan/) covers updates, backups, monitoring and security for $149 a month. [Get in touch](/contact-us/) and we'll recommend a hosting setup that suits your site and your team.
## FAQ
**Q:** Is static hosting faster than WordPress hosting?
**A:** Usually, for the first byte. A static site serves prebuilt files from a CDN with no server-side processing per request. A well-configured WordPress host with full-page caching can come close for anonymous visitors, but logged-in users, carts and other uncached requests still depend on PHP and database performance.
**Q:** Do I need a VPS for a small business website?
**A:** Rarely. A VPS gives you full control, but you also take on operating system updates, security hardening, backups and monitoring. Unless you need custom server software or have someone responsible for server administration, managed hosting is usually the safer and cheaper choice overall.
**Q:** Can I host WordPress as a static site?
**A:** Yes. A headless or static-export setup uses WordPress for editing and publishes static files to a CDN. It improves speed and security for content sites but adds build complexity, and dynamic features such as search, comments, forms and WooCommerce checkout need separate solutions.
**Q:** What should I check before choosing a hosting provider?
**A:** Check supported PHP and database versions, automatic backups and how restores work, staging environments, server locations and CDN options, security features, support quality, resource limits and the price at renewal rather than the introductory rate. Also confirm that you can export your site and leave easily.
---
# How to Plan a Website Project: Scope, Budget and Timeline
URL: https://hiddlins.com/blog/website-project-planning-guide/
Published: 2026-10-02 · Updated: 2026-10-02
Most website projects that run late or over budget don't fail in development. They fail in planning, when goals stay vague, scope is never written down and content is "nearly ready" for three months. Planning a website project doesn't need a project-management certificate. It needs a handful of clear decisions made in the right order. This guide walks through them: goals, audience and content, scope, choosing the right type of build, an honest budget, a realistic timeline, and the risks worth planning for before anyone writes a line of code.
## Start with goals, not pages
"We need a new website" is a starting point, not a goal. Before you discuss design or technology, write down what the site must achieve and how you'll know whether it did. Good website goals are specific and measurable:
- Generate qualified enquiries through the contact form or booking tool.
- Sell products online and reduce manual order handling.
- Cut repetitive support emails by answering common questions clearly.
- Recruit staff, attract partners or support a funding round with credible information.
- Replace an old site that is slow, insecure or impossible to update.
For each goal, name a **metric** (form submissions, revenue, conversion rate, support volume) and record today's baseline if you have one. Those metrics guide every later trade-off. If a feature doesn't serve a goal, it's a candidate for phase two. They also define "done" in a way everyone can agree on.
### Identify the decision-makers
Decide early who gives feedback and who approves. A project with one accountable decision-maker and a small group of named reviewers moves much faster than one where every stakeholder can reopen settled decisions. Write the names into the brief.
## Audience, content and structure
### Who is the site for?
List your main audiences and the top questions each one brings. A prospective customer, an existing customer looking for support and a job applicant need different paths through the site. Keep it practical: two or three primary audiences, each with the actions you want them to take. This is the groundwork for the [UX decisions that move conversion rates](/blog/ux-principles-conversion/).
### Content inventory and sitemap
If you have an existing site, list every page with its traffic and purpose, then decide for each: keep, rewrite, merge or delete. For a new site, draft a sitemap: the pages, their hierarchy and the main navigation. If you're unsure how visitors expect information to be grouped, a quick [card-sorting exercise](https://www.nngroup.com/articles/card-sorting-definition/) with a few real users is cheap and often revealing.
### Who writes the content?
This is the most underestimated question in web projects. Decide who writes each page, who supplies photos and who approves the copy, and set dates for each. Design without real content tends to produce layouts that break when actual text arrives. We strongly recommend drafting at least your key pages (home, main services or products, about, contact) before design begins.
**Content is the usual bottleneck**
- Development rarely waits on code. It waits on copy, images, product data and approvals.
- Put content deadlines in the plan with the same weight as development milestones, and assign a named owner to each.
## Define scope and prioritise ruthlessly
Scope is the written list of what will be built: pages and templates, features, integrations and content migration. If it isn't written down, it isn't agreed. A useful way to keep scope honest is to sort every requirement into priority tiers, a method often called MoSCoW:
- **Must have:** the site can't launch without it (contact form, core service pages, checkout for a store).
- **Should have:** important, but launch could happen without it if necessary (blog, newsletter integration).
- **Could have:** nice additions if time and budget allow (animated illustrations, a resource library).
- **Won't have (this time):** explicitly parked for a later phase. Writing this list down prevents a lot of arguments.
### Think in templates, not pages
Cost and effort are driven far more by the number of unique templates and features than by the page count. Fifty service pages that share one well-designed template cost much less than ten pages that are each different. When you list scope, group pages by template: home, service, article, product, landing page, contact.
### Don't forget the non-functional requirements
These rarely appear in a first brief, but they shape the build and are much cheaper to plan than to retrofit:
- **Performance:** set a performance budget for page weight, scripts and Core Web Vitals targets. web.dev's [performance budgets primer](https://web.dev/articles/performance-budgets-101) explains the idea.
- **Accessibility:** aim for [WCAG](https://www.w3.org/WAI/standards-guidelines/wcag/) 2.2 level AA. Our [WCAG guide for small businesses](/blog/wcag-accessibility-guide-small-business/) covers what that means in practice.
- **SEO and migration:** URL structure, redirects from the old site and structured data. See the [technical SEO launch checklist](/blog/technical-seo-checklist-new-websites/).
- **Security and privacy:** forms, user accounts, payment handling, cookie consent and data retention.
- **Editing:** who will update the site after launch, and how technical they are.
## Choose the right type of build
Most projects fall into one of four categories. Picking the right one early avoids paying for complexity you don't need, or outgrowing a platform within a year. The prices below are our current fixed starting prices, listed so you have concrete reference points. Your final quote depends on scope.
| | Build type | Best for | Typical scope | Our starting price
| [Landing page](/service/landing-page-development/) | A campaign, product launch or single service with one clear call to action | One long-form page, form or booking integration, analytics | $1,490
| [WordPress website](/service/wordpress-website-development/) | Small and medium businesses that need a full site they can edit themselves | Several templates, blog, forms, SEO foundations, editor training | $3,900
| [WooCommerce store](/service/woocommerce-store-development/) | Selling physical or digital products, bookings or subscriptions | Catalogue, cart and checkout, payments, shipping and tax rules, order emails | $5,900
| [Custom web application](/service/custom-web-application-development/) | Unique workflows: portals, dashboards, SaaS products, internal tools | User accounts, business logic, integrations and APIs, data model | from $9,500
A useful rule of thumb: if your requirements are mostly content, a CMS like WordPress is usually the right answer. If they are mostly workflow and data, so that users log in to do things rather than read things, you're probably looking at a custom application, possibly alongside a marketing site.
## Build an honest budget
A realistic budget has three parts: the build, the running costs and a contingency. Leaving out either of the last two is the most common budgeting mistake we see.
### 1. The build
Our packages above are typical starting points. What moves a quote up from there is predictable:
- More unique templates or complex layouts.
- Integrations with CRMs, booking systems, ERPs, payment providers or custom APIs.
- Content migration, especially large blogs or product catalogues with variations.
- Multilingual sites, user accounts and role-based permissions.
- Custom illustrations, photography, video or copywriting.
If you have a figure in mind, share it. A budget range lets a good studio propose the best solution within it, instead of guessing and quoting something unusable. Our [pricing page](/pricing/) has a project cost calculator for a first estimate.
### 2. Running costs
| | Item | Frequency | Notes
| Domain name | Yearly | Renew automatically; register it in your own company's account
| Hosting | Monthly or yearly | Varies widely by type; compared in our [hosting guide](/blog/choosing-web-hosting-static-wordpress-vps/)
| Premium plugins, themes or SaaS tools | Usually yearly | Licences needed for updates and support
| Maintenance and support | Monthly | Updates, backups, monitoring and fixes; our care plan is $149/month
| Payment processing (stores) | Per transaction | Set by your payment provider
| Content and marketing | Ongoing | New articles, campaigns, photography
### 3. Contingency
Every project discovers something: an integration with a quirky API, a content gap, a new legal requirement. We recommend holding back 10–20% of the build budget as contingency. It is a planning habit, not a prediction. If you don't need it, it funds phase two.
## Set a realistic timeline
A website project moves through recognisable phases. Durations vary with scope and how quickly feedback arrives, so treat the ranges below as a rough guide for a typical small-business WordPress site, not a promise. Landing pages compress this considerably, and stores and custom applications extend it.
| | Phase | What happens | Rough duration | Your main input
| Discovery & planning | Goals, scope, sitemap, technical decisions | 1–2 weeks | Brief, workshops, decisions
| Content & design | Wireframes, visual design, copy drafting | 2–3 weeks | Content, feedback rounds
| Development | Templates, features, integrations, CMS setup | 2–4 weeks | Answering questions, supplying assets
| Content entry & QA | Populating pages, testing on devices, accessibility and performance checks | 1–2 weeks | Reviewing and approving pages
| Launch & handover | Go-live, redirects, analytics, editor training | A few days | Final sign-off
Our [process page](/process/) explains how we run each phase. Two timeline tips matter more than any others:
- **Work back from a real deadline, not a wished-for one.** If you have a hard date such as a trade show, a product launch or the old hosting contract ending, say so on day one and let scope flex to meet it.
- **Schedule feedback windows.** Agree in advance how many review rounds each phase gets and how many days each round takes. Feedback that takes two weeks to arrive costs two weeks.
## Write the brief
Everything above fits into a short document that you can send to agencies or freelancers to get comparable quotes. One or two pages is enough. Here is a template you can copy:
```
# Website brief: [Company name]
## Goals & metrics
- Primary goal: ... (metric: ..., current baseline: ...)
- Secondary goals: ...
## Audiences
- Audience 1: who they are, top questions, key action
- Audience 2: ...
## Scope
- Templates/pages: home, service (x6), article, contact, ...
- Must have: ...
- Should have: ...
- Won't have (this phase): ...
- Integrations: CRM, booking, payments, newsletter ...
## Content
- Who writes copy: ... Photography: ... Deadline: ...
## Non-functional requirements
- Performance targets, WCAG 2.2 AA, SEO/redirects, editing needs
## Constraints
- Budget range: ... Hard deadline: ... Decision-maker: ...
## References
- Sites we like (and why): ...
```
A brief like this tells a studio what you need and shows them you'll be a well-organised client. That usually leads to sharper quotes and fewer surprises.
## Compare quotes and choose a partner
Send the same brief to each studio or freelancer you're considering, so the quotes are comparable. Quotes can still differ a lot, and the cheapest figure isn't always the cheapest project. When you compare them, look past the total:
### What a good proposal shows
- **A restated understanding of your goals.** A proposal that plays your brief back in its own words, and questions parts of it, shows the team has actually thought about your business.
- **Clear inclusions and exclusions.** Number of templates, design rounds, content entry, integrations, browser and device testing, accessibility and performance targets, and training. Ask what happens, and what it costs, when something falls outside them.
- **Milestones and payment terms** tied to deliverables rather than dates alone.
- **Ownership and access.** Confirmation that you will own the code, content, domain and accounts, with admin credentials handed over at launch.
- **Post-launch support.** A warranty period for defects, and a clear option for ongoing maintenance if you want it.
### Questions worth asking
- Who will actually work on the project, and who is my day-to-day contact?
- How do you handle change requests once the scope is agreed?
- Which plugins, frameworks or third-party services will the site depend on, and what do they cost each year?
- How will you test performance and accessibility before launch?
- Can I see live examples of similar work, and talk to you about the trade-offs in those projects?
Pay attention to how each candidate answers as well as what they say. A partner who explains trade-offs plainly, admits what they would not recommend and puts commitments in writing is usually the one who delivers on time. You can see examples of our approach in our [portfolio](/portfolio/).
## Plan for risks and life after launch
### Common risks, and the cheap way to handle each
- **Scope creep:** use a written change-request process that estimates cost and time before work starts, and keep a parking list for phase two.
- **Lost SEO in a redesign:** build the redirect map and keep URLs stable where possible.
- **Vendor lock-in:** make sure you own the domain, hosting account, code and content, and get admin access to everything.
- **Single points of knowledge:** get documentation and editor training as part of handover.
### Plan the first 90 days after launch
A launch is the start of a site's working life. Budget time to review analytics against your goals, fix issues real users uncover and publish the content you parked. Plan who will handle updates, backups and security monitoring. For WordPress and WooCommerce sites, that maintenance isn't optional, as our [WordPress security hardening checklist](/blog/wordpress-security-hardening/) explains.
**Key takeaways**
- Define measurable goals and one accountable decision-maker before talking about design.
- Write scope down, prioritise with must/should/could/won't, and think in templates rather than pages.
- Budget for the build, the running costs and a 10–20% contingency.
- Treat content and feedback deadlines as seriously as development milestones.
## Turn your plan into a project
A well-planned website project is calmer, cheaper and better than one that is figured out along the way. You don't need every answer before you start. You do need clear goals, a written scope, an honest budget and a timeline that includes the people who supply content and feedback.
When you're ready, try the project cost calculator on our [pricing page](/pricing/), or look at our [WordPress Website Development](/service/wordpress-website-development/) package if a full business site is what you need. Prefer to talk it through? [Send us your brief](/contact-us/), rough or polished, and we'll help you shape it into a plan with a fixed price and a realistic timeline.
## FAQ
**Q:** How much should I budget for a new website?
**A:** It depends mostly on scope: the number of unique templates, content, integrations and whether you sell online. As a reference point, our fixed-price packages start at $1,490 for a landing page, $3,900 for a WordPress website and $5,900 for a WooCommerce store, with custom web applications from $9,500. Add ongoing costs for hosting, licences and maintenance, plus a contingency.
**Q:** How long does it take to build a website?
**A:** A focused landing page can often be delivered within a few weeks, a typical small-business WordPress site in roughly one to two months and an online store or custom application in longer, phased timelines. The biggest variable is usually not development but how quickly content and feedback arrive.
**Q:** What should a website brief include?
**A:** Goals and how you'll measure them, target audiences, a list of pages or a draft sitemap, required features and integrations, content responsibilities, brand assets, examples of sites you like and why, budget range, deadline and who signs off decisions. A one- or two-page brief is enough to get accurate quotes.
**Q:** What is scope creep and how do I avoid it?
**A:** Scope creep is the gradual addition of features or changes after the plan is agreed, which pushes out both budget and timeline. Prevent it with a written scope, a prioritised feature list, a change-request process that estimates cost and time before work starts, and a parking list for ideas that can wait for phase two.
---
# Practical Machine Learning in the Browser with JavaScript
URL: https://hiddlins.com/blog/machine-learning-in-the-browser/
Published: 2026-09-22 · Updated: 2026-09-22
Machine learning is no longer something only a server can do. Browsers now ship WebAssembly with SIMD and threads, and increasingly WebGPU, so a web page can classify images, transcribe speech, embed text for semantic search or run a small language model entirely on the user's device. Nothing leaves the device, and you pay no per-request inference bill. This guide covers how to do it in practice with TensorFlow.js, ONNX Runtime Web and Transformers.js, when it is the right choice, and how to handle the biggest constraint: model size.
## Why run machine learning in the browser?
Client-side inference isn't always the right architecture, but when it fits, the benefits are concrete:
- **Privacy by design.** The user's photos, voice recordings or documents are processed locally. For sensitive inputs such as ID documents, health notes or private messages, not having to transmit the data at all is the strongest privacy guarantee you can give.
- **Low latency.** Once the model is loaded, there is no network round trip, so real-time uses like webcam pose tracking, live captioning or as-you-type suggestions become feasible.
- **Cost that doesn't scale with usage.** The user's hardware does the compute. Your costs are hosting static model files, which a CDN caches cheaply.
- **Offline capability.** With the model cached, features keep working without a connection, which suits progressive web apps and field tools.
The trade-offs are just as real: a one-off model download, wide variation in device capability, and memory limits, especially on mobile. Most of this guide is about managing those.
## Use cases that work well today
It helps to think in terms of tasks, not models. These categories are well served by small, browser-friendly models and mature tooling:
### Vision
- **Image classification and tagging**, for example suggesting categories when a user uploads a product photo, or rejecting blurry or wrong-orientation document scans before upload.
- **Object and pose detection** for fitness apps, gesture controls, virtual try-on and accessibility tools, often combined with a canvas overlay like the one in our [Canvas animation tutorial](/blog/canvas-particle-animation-tutorial/).
- **Background removal and segmentation** for profile pictures and product images, without uploading the original photo.
### Text
- **Embeddings and semantic search** over help centres, documentation or product catalogues.
- **Classification**: sentiment, topic routing for contact forms, detecting language before choosing a translation path.
- **Small generative models** for autocomplete, rewriting or summarising short passages, where a quantised model of a few hundred million parameters is often enough.
### Audio
- **Speech recognition** with compact Whisper-family models for dictation and captions, keeping recordings on the device.
- **Keyword spotting and audio classification** for voice commands or sound-event detection.
What these have in common is bounded input, tolerance for occasional imperfect output, and a clear user benefit from privacy or immediacy. If a feature needs encyclopaedic knowledge or long, high-stakes reasoning, a large server-hosted model is usually the better tool.
## The runtime layer: WebAssembly, WebGL, WebGPU and WebNN
Every browser ML library sits on top of one or more backends, the browser technologies that actually run the maths. Understanding them explains most of the performance differences you'll see.
| | Backend | Runs on | Strengths | Limitations
| WebAssembly (Wasm) | CPU | Available practically everywhere; broadest operator coverage; SIMD and multithreading speed it up considerably | Slower than GPU for large models; threads require cross-origin isolation
| WebGL | GPU | Wide support; mature in TensorFlow.js | A graphics API repurposed for compute; overheads and precision quirks
| WebGPU | GPU | Real compute shaders; much better suited to modern ML workloads | Not yet available in every browser/OS combination; secure contexts only
| WebNN | CPU, GPU or NPU | Lets the browser hand work to OS-level ML acceleration, including neural processing units | Emerging API with limited availability; treat as progressive enhancement
[MDN's WebGPU documentation](https://developer.mozilla.org/en-US/docs/Web/API/WebGPU_API) currently marks the API as having limited availability and notes that it only works in secure contexts. The practical pattern is to detect WebGPU, use it when present, and fall back to WebAssembly otherwise:
```
async function pickDevice() {
if ('gpu' in navigator) {
try {
const adapter = await navigator.gpu.requestAdapter();
if (adapter) return 'webgpu';
} catch (err) {
// Adapter request can fail on blocklisted drivers; fall through
}
}
return 'wasm';
}
```
## Choosing a library
Three libraries cover most real-world projects. They overlap, but each has a clear sweet spot.
### TensorFlow.js
[TensorFlow.js](https://www.tensorflow.org/js) is the most established option. It runs pre-trained models, converts TensorFlow/Keras models, and is unusual in supporting **training** in JavaScript, including transfer learning on the user's own data in the browser. It has CPU, WebGL, Wasm and WebGPU backends and a large collection of ready-made models for pose detection, face landmarks, object detection and more.
### ONNX Runtime Web
ONNX is an open model format that most frameworks can export to, PyTorch in particular. [ONNX Runtime Web](https://onnxruntime.ai/docs/tutorials/web/) runs those models in the browser with Wasm, WebGL, WebGPU and WebNN execution providers. The Wasm provider supports all ONNX operators, while the GPU providers support a subset. That makes it the natural choice when your data science team trains in Python and you need a reliable path to production on the web.
### Transformers.js
[Transformers.js](https://huggingface.co/docs/transformers.js/index) (published on npm as @huggingface/transformers) mirrors the Python transformers pipeline API and runs ONNX-converted models from the Hugging Face Hub, using ONNX Runtime underneath. In a few lines you get tasks like sentiment analysis, embeddings, zero-shot classification, translation, summarisation, speech recognition and image segmentation. It is the fastest way to prototype.
| | | TensorFlow.js | ONNX Runtime Web | Transformers.js
| Best for | TF/Keras models, in-browser training | Custom models exported from PyTorch and other frameworks | Ready-made NLP, vision and audio tasks
| Abstraction level | Tensors and layers | Inference sessions | High-level task pipelines
| Model source | TF Hub/Kaggle models, converted models | Any ONNX file | Hugging Face Hub (ONNX weights)
| GPU path | WebGL, WebGPU | WebGPU, WebGL, WebNN | WebGPU (via ONNX Runtime)
| Training | Yes | Inference-focused | Inference only
## Example: semantic search with Transformers.js in a Web Worker
A useful, privacy-friendly feature for many sites is semantic search over your own content, matching meaning rather than exact keywords. The pattern: precompute embeddings for your articles at build time, ship them as JSON, and embed only the user's query in the browser.
Run the model in a **Web Worker** so that loading and inference never block the main thread, which would hurt responsiveness and your INP score:
```
// embed-worker.js (load with: new Worker('embed-worker.js', { type: 'module' }))
import { pipeline } from '@huggingface/transformers';
let extractorPromise = null;
function getExtractor(device) {
if (!extractorPromise) {
extractorPromise = pipeline('feature-extraction', 'Xenova/all-MiniLM-L6-v2', {
device, // 'webgpu' or 'wasm'
dtype: 'q8', // quantised weights: smaller download
progress_callback: (p) => self.postMessage({ type: 'progress', p }),
});
}
return extractorPromise;
}
self.onmessage = async ({ data }) => {
const extractor = await getExtractor(data.device);
const output = await extractor(data.text, { pooling: 'mean', normalize: true });
self.postMessage({ type: 'result', vector: Array.from(output.data) });
};
```
On the main thread, the query vector is compared with your precomputed article vectors. Because the vectors are normalised, cosine similarity reduces to a dot product:
```
function dot(a, b) {
let sum = 0;
for (let i = 0; i < a.length; i++) sum += a[i] * b[i];
return sum;
}
function rank(queryVector, articles, topK = 5) {
return articles
.map((article) => ({ ...article, score: dot(queryVector, article.vector) }))
.sort((x, y) => y.score - x.score)
.slice(0, topK);
}
```
The search query never touches your server. For a few hundred articles, a brute-force comparison like this takes milliseconds, and you don't need a vector database.
## Example: a custom model with ONNX Runtime Web
When the model is your own, for example a product-image classifier fine-tuned in PyTorch and exported with torch.onnx.export, ONNX Runtime Web gives you direct control over the session. List execution providers in order of preference and the runtime falls back if one isn't available:
```
import * as ort from 'onnxruntime-web/webgpu';
const session = await ort.InferenceSession.create('/models/classifier.onnx', {
executionProviders: ['webgpu', 'wasm'],
graphOptimizationLevel: 'all',
});
// Preprocessed image: Float32Array of shape [1, 3, 224, 224]
async function classify(pixels) {
const input = new ort.Tensor('float32', pixels, [1, 3, 224, 224]);
const results = await session.run({ [session.inputNames[0]]: input });
const logits = results[session.outputNames[0]].data;
return softmax(Array.from(logits));
}
function softmax(values) {
const max = Math.max(...values);
const exps = values.map((v) => Math.exp(v - max));
const total = exps.reduce((a, b) => a + b, 0);
return exps.map((e) => e / total);
}
```
Preprocessing has to match training exactly: resize method, channel order, normalisation mean and standard deviation. In our experience, mismatched preprocessing causes more "the model works in Python but not in the browser" bugs than anything else. Validate the outputs against the Python version on a handful of test images before shipping.
## Example: TensorFlow.js and memory discipline
TensorFlow.js exposes tensors directly, which gives you flexibility and one responsibility: GPU-backed tensors are not garbage-collected like ordinary JavaScript objects. Wrap synchronous work in tf.tidy() and dispose of anything you keep:
```
import * as tf from '@tensorflow/tfjs';
await tf.setBackend('webgl'); // or 'wasm' / 'webgpu' with the matching backend package
await tf.ready();
const model = await tf.loadGraphModel('/models/mobilenet/model.json');
function predict(imageElement) {
return tf.tidy(() => {
const input = tf.browser.fromPixels(imageElement)
.resizeBilinear([224, 224])
.toFloat()
.div(127.5).sub(1) // scale to [-1, 1] as the model expects
.expandDims(0);
return model.predict(input).dataSync();
});
}
// Watch for leaks during development
console.log(tf.memory().numTensors);
```
If numTensors keeps climbing as the user interacts, you have a leak. On a phone, a leak like that ends in a crashed tab within minutes.
## Model size: the trade-off that shapes everything
A server can load a model once. A browser has to download it, at least on the first visit. A model's download size is roughly its parameter count multiplied by the bytes stored per parameter, which is why **quantisation**, storing weights at lower precision, matters so much on the web.
| | Precision | Bytes per parameter | Approx. size of a 100M-parameter model | Typical trade-off
| fp32 | 4 | ~400 MB | Reference accuracy; usually too large for casual web use
| fp16 | 2 | ~200 MB | Near-identical accuracy for most models; good fit for WebGPU
| int8 (q8) | 1 | ~100 MB | Small accuracy loss for many tasks; good default for Wasm
| 4-bit (q4) | 0.5 | ~50 MB | Larger quality impact; often what makes small LLMs feasible
These figures are simple arithmetic and leave out file overheads, but they show the scale of the decision. Transformers.js exposes this directly through its dtype option. Its documentation lists fp32 as the default on WebGPU and q8 on Wasm, with fp16 and q4 available depending on the model.
### Strategies for managing size
- **Choose task-specific small models.** A distilled sentence-embedding model or a MobileNet-class vision model is tens of megabytes or less, and often good enough. Start small and move up only if quality requires it.
- **Load on intent, not on page load.** Download the model when the user opens the feature, not when they land on the page. Your [Core Web Vitals](/blog/core-web-vitals-guide/) will thank you.
- **Cache aggressively.** Serve model files with long-lived, immutable cache headers and versioned filenames. Transformers.js also caches downloaded files using the browser's Cache API by default, so repeat visits skip the download.
- **Show honest progress.** A progress bar with megabytes remaining is far better than an unexplained spinner.
- **Respect constrained users.** Check navigator.connection?.saveData where available, and offer a server-side or non-ML fallback for low-memory devices.
**Enabling multithreaded WebAssembly**
- Wasm threads need SharedArrayBuffer, which browsers only expose on cross-origin isolated pages. Serve the page with Cross-Origin-Opener-Policy: same-origin and Cross-Origin-Embedder-Policy: require-corp, and check self.crossOriginIsolated.
- Isolation can break third-party embeds such as video players and some ad or analytics scripts, so test the whole page, not just the ML feature.
## Privacy, security and knowing when not to
### Keeping the privacy promise
"Runs on your device" is a strong claim, so make sure it is true. Audit the feature's network traffic in DevTools. Analytics events, error-tracking payloads and session-replay tools can quietly capture the very inputs you promised to keep local. If you describe the feature as private in your UI or privacy policy, back it up by checking what actually leaves the device.
### Your model is public
Anything you ship to the browser can be downloaded and inspected. Don't deploy a model whose weights are a trade secret, and never rely on client-side inference for security decisions such as fraud checks or content moderation that must not be bypassed. A user can always modify the result before it reaches your server.
### When a server is the better choice
- The model is too large to download comfortably (large generative models, high-accuracy vision models).
- You need consistent results and latency on every device, including low-end phones.
- The model or its outputs must stay confidential, or results must be trusted server-side.
- Inference needs data that lives on the server anyway.
Hybrid setups work well too: a small on-device model handles the common, latency-sensitive cases and escalates hard ones to a server, with the user's consent where data is sensitive.
**Key takeaways**
- Browser ML gives you privacy, low latency and usage-independent costs, at the price of downloads and device variability.
- Use Transformers.js for ready-made tasks, ONNX Runtime Web for your own exported models, and TensorFlow.js for TF models or in-browser training.
- Prefer WebGPU when available, always fall back to WebAssembly, and run inference in a Web Worker.
- Quantise, load on intent and cache. Model size is the constraint that shapes everything else.
## Bringing ML features to your product
On-device machine learning has moved from demos to dependable product features: private document scanning, smart search, accessibility aids like live captions, and interactive visual tools. The libraries are mature enough that most of the work is ordinary engineering: choosing a model that fits, keeping the main thread free and treating megabytes with respect. If you are weighing whether you need a framework around all this, our take on [modern JavaScript without the bloat](/blog/vanilla-javascript-without-frameworks/) applies here too. For presenting model output visually, see our comparison of [SVG, Canvas and WebGL](/blog/web-data-visualization-svg-canvas-webgl/).
Have an idea for an ML-powered feature, or a model that needs to run on the web? Our [Custom Web Application Development](/service/custom-web-application-development/) service covers prototyping, model integration and production hardening. [Tell us what you're building](/contact-us/) and we'll help you decide whether it belongs in the browser, on a server or in both.
## FAQ
**Q:** Can a browser really run machine learning models fast enough to be useful?
**A:** Yes, for the right models. Image classification, object detection, text embeddings, sentiment analysis, speech recognition and small language models all run well in modern browsers, especially with WebGPU. Very large generative models are still better served from a server or a dedicated API.
**Q:** Is browser-based ML private?
**A:** Inference happens on the user's device, so input data such as photos, audio or text does not need to leave the browser. That is a real privacy benefit, but it only holds if your page doesn't also send that data to analytics or logging services. The model file itself is public, since anyone can download it.
**Q:** Which library should I start with: TensorFlow.js, ONNX Runtime Web or Transformers.js?
**A:** For ready-made NLP, vision or audio tasks using models from the Hugging Face Hub, start with Transformers.js. If you have a model trained in PyTorch or another framework, export it to ONNX and use ONNX Runtime Web. Choose TensorFlow.js if your model comes from the TensorFlow ecosystem or you want to train or fine-tune in JavaScript.
**Q:** Does WebGPU work in every browser?
**A:** Not yet universally. MDN still marks WebGPU as having limited availability, and it requires a secure (HTTPS) context. Always feature-detect with navigator.gpu and fall back to the WebAssembly backend, which runs on effectively every modern browser.
---
# Generative Engine Optimization: Getting Your Brand Cited by AI Search
URL: https://hiddlins.com/blog/generative-engine-optimization-ai-search/
Published: 2026-09-12 · Updated: 2026-09-12
People increasingly get answers instead of a list of blue links. Google's AI Overviews and AI Mode, Gemini, ChatGPT search, Perplexity and Claude all write a response and cite a handful of sources. Generative engine optimization (GEO) is the practice of making your brand one of those sources. Some of it is new, but most of it is good SEO done with more discipline. This guide explains how answer engines actually find and cite pages, what you can control (crawler access, entity clarity, structured data, content you can quote) and where the hype runs ahead of the evidence.
## What generative engine optimization is, and what it isn't
A large language model doesn't "search" in the classic sense when it answers from memory. When an assistant shows citations, though, it is almost always using **retrieval-augmented generation**. The system runs one or more searches, fetches or looks up candidate pages, pulls out relevant passages, and writes an answer grounded in them. The links you see are the passages it relied on.
That has a practical consequence. **To be cited, you first have to be retrieved.** Retrieval depends on search indexes and crawlers, which is familiar SEO territory. GEO then adds a second question: once your page is among the candidates, is it easy for the model to understand, trust and quote?
What GEO is not:
- **A way to "inject" your brand into a model's training data.** What a model learned during training is beyond your control and changes only when it is retrained.
- **A set of secret markup tricks.** Google says plainly that there are no special requirements, machine-readable AI files or special schema needed to appear in its AI features (more on that below).
- **Guaranteed.** Answers vary between runs, users, locations and model versions. You are improving your odds, not buying a placement.
## How the major answer engines find and cite sources
Each provider combines its own crawlers, search indexes and partners differently, and the details change often. The broad picture as of late 2026:
### Google AI Overviews and AI Mode
Both are built on Google Search's index. Google's documentation on [AI features and your website](https://developers.google.com/search/docs/appearance/ai-features) describes a "query fan-out" technique: the system issues several related searches across subtopics and can surface a wider set of supporting pages than a single classic query would. The requirement for inclusion is simply that a page is indexed and eligible to appear in Search with a snippet. Google lists no extra technical requirements.
### Gemini
The Gemini app can ground answers in Google Search results. Use of crawled content for Gemini model training and for grounding in other Google products is controlled by the Google-Extended robots.txt token. Google's [crawler documentation](https://developers.google.com/search/docs/crawling-indexing/google-common-crawlers) notes that it doesn't affect inclusion or ranking in Google Search.
### ChatGPT search
OpenAI separates its crawlers by purpose: OAI-SearchBot surfaces websites in ChatGPT's search features, GPTBot collects content that may be used to train foundation models, and ChatGPT-User fetches pages when a user's request triggers a visit. Their [crawler documentation](https://developers.openai.com/api/docs/bots) notes that sites which opt out of OAI-SearchBot won't appear in ChatGPT search answers.
### Perplexity
Perplexity runs PerplexityBot to index and link websites in its answers, and Perplexity-User for fetches a user triggers. It says PerplexityBot isn't used to crawl content for training foundation models.
### Claude
Anthropic documents three agents: ClaudeBot collects content for model training, Claude-SearchBot improves the relevance of search results, and Claude-User fetches pages when a person asks Claude a question that needs web content.
| | Token / user agent | Operator | Main purpose | Blocking it affects
| Googlebot | Google | Search indexing | Google Search and AI Overviews/AI Mode
| Google-Extended | Google | Control token (no separate crawler) | Gemini training and grounding use; not Search ranking
| OAI-SearchBot | OpenAI | ChatGPT search | Appearing in ChatGPT search answers
| GPTBot | OpenAI | Model training | Use of content in future training
| PerplexityBot | Perplexity | Search index | Appearing in Perplexity answers
| ClaudeBot | Anthropic | Model training | Use of content in future training
| Claude-SearchBot | Anthropic | Search quality | Visibility in Claude's search results
| CCBot | Common Crawl | Open web archive | Inclusion in Common Crawl datasets, which many AI projects use
**User-triggered fetchers are different**
- Agents like ChatGPT-User, Perplexity-User and Claude-User act on a specific person's request. Providers state that robots.txt rules may not apply to them in the same way as to automatic crawlers. Read each provider's current documentation if this matters to you.
## Crawler access: a deliberate robots.txt policy
The most common GEO problem we see isn't weak content. It is sites that block AI search crawlers by accident: a security plugin, a CDN bot-management rule or a copied robots.txt snippet that shuts out everything with "bot" in the name. Decide on a policy deliberately, along two separate axes:
- **Search and citation crawlers:** if you want to be cited, allow them.
- **Training crawlers:** a business and licensing decision. Blocking them doesn't remove you from AI search with the providers that separate the two.
Here is a policy that welcomes AI search but opts out of training:
```
# Search engines and AI search/citation crawlers: allowed
User-agent: Googlebot
User-agent: Bingbot
User-agent: OAI-SearchBot
User-agent: PerplexityBot
User-agent: Claude-SearchBot
Allow: /
# Model-training crawlers and controls: opted out
User-agent: GPTBot
User-agent: ClaudeBot
User-agent: Google-Extended
User-agent: CCBot
Disallow: /
# Everyone else
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Sitemap: https://www.example.com/sitemap_index.xml
```
Two caveats. First, robots.txt is a voluntary standard. Reputable operators honour it, but it isn't access control. Second, blocking Google-Extended is a trade-off you should make knowingly. It stops grounding use in Gemini-family products outside Search, which some brands want and others don't. Whatever you choose, also check your CDN or firewall. Robots.txt allowing a crawler means nothing if a bot-protection rule returns a 403 or a challenge page to it.
## Entity clarity: make it obvious who you are
Language models reason about **entities**: organisations, people, products, places, and the relationships between them. If your brand name is ambiguous, inconsistent or rarely tied to what you do, a model has a hard time deciding that you are the right source to cite for a question in your field.
### Practical steps
- **Use one canonical name.** Use the same spelling, capitalisation and legal-versus-trading name everywhere: site header, footer, social profiles, directories and press mentions.
- **Write a precise About page.** Say in plain sentences what you are, what you do, who you serve and where you operate. "We are an independent web development studio building WordPress sites and custom web applications" is far more useful to a machine than a page of slogans.
- **State relationships explicitly.** Link your services, products and topic pages to each other with descriptive anchor text, so the site itself lays out what you are an authority on.
- **Connect your profiles.** Link from your site to your official profiles and from those profiles back to your site, and list them in sameAs in your Organization markup.
## Structured data: Organization, Article and FAQPage
Let's be clear about what structured data does here. Google says that no special schema is required for AI Overviews or AI Mode, and that your markup must match the visible content of the page. Still, JSON-LD built on schema.org types is an unambiguous, machine-readable statement of facts, and it costs little to maintain. It supports regular rich results and entity understanding, and it removes guesswork for any system that parses it.
### Organization
Put this on the homepage (or sitewide) with your name, URL, logo, contact point and sameAs profiles. This is where entity clarity becomes machine-readable.
### Article
On blog posts and guides, Article (or BlogPosting) markup states the headline, publication and modification dates, author and publisher. Accurate dates matter because answer engines care about freshness for many queries.
```
```
### FAQPage
FAQPage markup describes real question-and-answer content on a page. Google has limited FAQ rich results to a small set of authoritative government and health sites since 2023, so don't expect expandable FAQs in classic results. The markup still describes the content accurately, and question-shaped content maps naturally onto the questions people type into assistants. Only mark up questions and answers that are visible on the page.
## Writing content that gets cited
Retrieval systems work on **passages**, not whole pages. A page that buries its answer in the sixth paragraph of a narrative is harder to quote than one that states it plainly near a matching heading. Pages that get cited tend to share these traits:
- **Answer first.** Open each section with a direct one- or two-sentence answer, then expand. This is also good writing for skimming humans.
- **Self-contained passages.** Each section should make sense on its own, without "as mentioned above". Repeat the subject noun instead of relying on "it".
- **Descriptive headings.** Phrase headings the way people ask: "How long does a WordPress migration take?" rather than "Timelines".
- **Structure that extracts cleanly.** Tables for comparisons, numbered lists for procedures and definitions in a single sentence. [Semantic HTML](/blog/semantic-html-seo-accessibility/) makes this structure explicit.
- **Specifics.** Numbers, thresholds, version numbers, dates and named standards. A vague claim has nothing in it for a model to cite.
- **Visible freshness and accountability.** Show updated dates, a clear author or publisher, and an editorial policy explaining how content is checked.
Technical health still underpins all of this. A page that renders its main content only after heavy client-side JavaScript, or that responds slowly, may be retrieved less reliably. Start with our [technical SEO checklist](/blog/technical-seo-checklist-new-websites/).
## Original research and consistent brand mentions
### Give models something they can't get elsewhere
If twenty pages say the same thing, an answer engine can cite any of them, or none. Original information breaks that tie. You don't need a research department to produce it:
- Publish aggregated, anonymised data from your own work, such as typical project timelines or the most common issues found in audits, with a clear methodology.
- Run your own benchmarks, documenting the setup well enough that someone else could reproduce them.
- Write definitive documentation for your own products, pricing and processes. For questions about you, you should be the best source.
- Create explanatory tools such as calculators, checklists and decision tables that others reference.
### Be described consistently off-site
Answer engines also learn about you from other sites: directories, industry publications, partner pages, reviews and community discussions. Consistency counts for more than volume here. Make sure the description, category and core facts about your business match everywhere you control them. Earn mentions in places that are relevant to your field. A short, accurate mention in a respected industry resource does more than dozens of low-quality listings.
## The llms.txt proposal: what it is and how much it matters
[llms.txt](https://llmstxt.org/) is a proposal for a Markdown file at /llms.txt that gives language models a concise, curated guide to a site. It has a required H1 with the site name, an optional blockquote summary, and H2 sections listing key links with short notes. An "Optional" section holds secondary links. The proposal also suggests offering clean Markdown versions of important pages.
```
# Example Studio
> Independent web development studio building WordPress sites,
> WooCommerce stores and custom web applications.
## Services
- [WordPress development](https://www.example.com/services/wordpress/): Custom themes and block-based sites
- [Performance audits](https://www.example.com/services/audit/): Core Web Vitals and technical SEO reviews
## Guides
- [Technical SEO checklist](https://www.example.com/blog/technical-seo-checklist/): Pre-launch checks
## Optional
- [Company policies](https://www.example.com/policies/)
```
Be realistic about it. **llms.txt is a proposal, not a standard, and adoption is uneven.** It is popular with developer-documentation sites and some AI coding tools. The major answer engines haven't published consistent commitments to use it in ranking or citation, and Google explicitly says that no special AI text files are needed for its AI features. We see it as a cheap, harmless experiment that is worth doing if you maintain good documentation. It won't fix weak fundamentals.
## Measuring results
Measurement is still rough, so combine several signals:
| | Signal | Where to find it | What it tells you
| Google AI features traffic | Search Console Performance report, "Web" search type | Clicks and impressions, including AI Overviews and AI Mode (not separated out)
| Assistant referrals | Analytics referrers such as chatgpt.com, perplexity.ai, gemini.google.com, claude.ai | Which assistants send visitors, and to which pages
| Crawler activity | Server or CDN logs filtered by user agent | Whether search and citation bots are reaching your pages at all
| Prompt testing | A fixed list of customer questions, checked monthly | Whether, and how accurately, you are mentioned or cited
Treat prompt testing as directional. Answers vary between sessions, accounts and locations, so look for trends across a stable question set, not single screenshots.
**Key takeaways**
- To be cited, you must first be retrieved. Indexing, crawler access and technical health come first.
- Separate AI search crawlers from training crawlers in robots.txt, and check that your CDN doesn't silently block them.
- Make your entity unambiguous: consistent name, precise About page, Organization markup with sameAs.
- Write answer-first, self-contained passages, and publish information others can't.
- Treat llms.txt as an optional experiment, not a requirement.
## Be the source worth citing
Generative engine optimization rewards the same things good SEO always has, applied more strictly: crawlable pages, clear structure, unambiguous facts and content that adds something new. The new parts are mostly about access decisions and describing your brand consistently. Speed matters too. Pages that load and render quickly are easier for every crawler to process, which our [Core Web Vitals guide](/blog/core-web-vitals-guide/) covers in detail.
Want to know how AI search engines see your site today? Our [Performance & Technical SEO Audit](/service/performance-seo-audit/) reviews crawler access, structured data, entity signals and content structure alongside the classic technical checks. [Contact us](/contact-us/) and we'll take a look.
## FAQ
**Q:** Is generative engine optimization different from SEO?
**A:** Mostly it is SEO with a different emphasis. AI search features retrieve pages from search indexes or their own crawls, so crawlability, indexing and quality content still come first. GEO adds attention to entity clarity, passages that can be quoted on their own, original information and how consistently your brand is described across the web.
**Q:** Do I need an llms.txt file to appear in AI answers?
**A:** No. llms.txt is a community proposal, and support for it varies between AI providers. Google states that no special AI files or markup are needed to appear in AI Overviews or AI Mode. Publishing one is low-cost and harmless, but treat it as an experiment rather than a requirement.
**Q:** If I block GPTBot, will my site disappear from ChatGPT?
**A:** Not necessarily. OpenAI documents GPTBot as the crawler for model training and OAI-SearchBot as the crawler for ChatGPT search. You can block training while still allowing search. Check each provider's documentation, because the separation between training, search and user-triggered fetching differs from company to company.
**Q:** How can I tell whether AI search sends me traffic?
**A:** Google includes AI Overviews and AI Mode traffic in the Search Console Performance report under the Web search type. For other assistants, look for referrals from domains such as chatgpt.com, perplexity.ai, gemini.google.com and claude.ai in your analytics, and run regular manual checks of the questions your customers actually ask.
---
# The Technical SEO Checklist for Launching a New Website
URL: https://hiddlins.com/blog/technical-seo-checklist-new-websites/
Published: 2026-09-02 · Updated: 2026-09-02
A new website gets one first impression with search engines. If the launch ships with a leftover noindex tag, a staging domain in the canonical URLs or a missing redirect map from the old site, you can lose weeks of visibility while crawlers sort out the mess. This technical SEO checklist covers what we verify on every launch: crawling, indexing, canonical URLs, redirects, structured data, performance, security and the first 30 days after go-live. Each item is practical and testable, and none of it depends on tricks.
## Why technical SEO comes first
Content and links decide how well you rank. Technical SEO decides whether you can rank at all. A search engine has to **discover** a URL, **crawl** it, **render** it, decide whether it is worth **indexing**, and then pick a **canonical** version among any duplicates. A failure at any of those steps hides your best content, however good it is.
New sites are especially exposed for three reasons:
- **No history.** Search engines have no prior signals about your domain, so they crawl cautiously, and a confusing structure wastes the attention they do give.
- **Development leftovers.** Staging settings like "Discourage search engines" in WordPress, hard-coded test URLs and placeholder content often survive into production.
- **Redesign migrations.** If the new site replaces an old one, every URL that changes without a redirect throws away the links and rankings the old page earned.
Google's own [SEO Starter Guide](https://developers.google.com/search/docs/fundamentals/seo-starter-guide) is a good baseline. The checklist below turns those principles into concrete launch tasks.
## Protect staging, then plan the switch
Most launch-day disasters begin on the staging server. Your development environment has to stay invisible while you build, and every one of those protections has to come off cleanly when you go live.
### Use authentication, not just robots.txt
A Disallow: / rule in robots.txt asks crawlers not to fetch pages, but it does not stop a URL from being indexed if someone links to it. The URL can still appear in results without a description. The reliable option is HTTP authentication on the whole staging host, with a noindex response header as a second layer:
```
# Staging server only: password-protect and noindex everything
server {
server_name staging.example.com;
auth_basic "Staging";
auth_basic_user_file /etc/nginx/.htpasswd;
add_header X-Robots-Tag "noindex, nofollow" always;
}
```
### Write a launch-switch list
Write down every environment-specific setting before launch day, so nobody is relying on memory at 11 p.m. Typical entries include:
- WordPress Settings → Reading → Discourage search engines unchecked on production.
- X-Robots-Tag headers and
removed.
- Site URL, home URL and any hard-coded staging domains replaced in the database (use a serialisation-safe search-and-replace tool for WordPress).
- Analytics and tag manager IDs switched from test to production properties.
- Transactional email and payment gateways moved out of sandbox mode.
## Crawlability: robots.txt, status codes and internal links
### A minimal, correct robots.txt
Most small and medium sites need a short robots.txt. Its job is to keep crawlers out of low-value areas (internal search results, cart and account pages) and to point to your sitemap. It is not a security tool. Anything you list is publicly readable. Google's [robots.txt introduction](https://developers.google.com/search/docs/crawling-indexing/robots/intro) explains the syntax in detail.
```
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Disallow: /?s=
Disallow: /search/
Disallow: /cart/
Disallow: /checkout/
Disallow: /my-account/
Sitemap: https://www.example.com/sitemap_index.xml
```
**Do not block CSS or JavaScript**
- Google renders pages much as a browser does. If robots.txt blocks your theme's stylesheets or scripts, Google may see a broken layout and misjudge the page, including how it looks on mobile.
- Do not use robots.txt to remove pages from the index. A page blocked from crawling can't show Google its noindex tag.
### Status codes that tell the truth
Every URL should return the status code that matches what it actually is:
- **200** for real, indexable content.
- **301** (or 308) for permanent moves. Use 302/307 only for genuinely temporary situations.
- **404** or **410** for content that does not exist. A "page not found" message served with a 200 status is a soft 404, and it wastes crawl attention.
- **503** with a Retry-After header during planned maintenance, so crawlers come back later instead of recording errors.
### Internal linking and crawl depth
Crawlers find pages by following links. Every important page should be reachable through normal links. JavaScript click handlers don't count. Keep key pages within about three clicks of the homepage. Orphan pages, which appear in the sitemap but have no internal links, are a common finding in audits. They signal that the site's own navigation doesn't consider them important. Clean, [semantic HTML](/blog/semantic-html-seo-accessibility/) with real navigation landmarks helps crawlers and assistive technology alike.
## Indexability and canonical URLs
### Pick one canonical host
Your site is reachable at four or more variants unless you consolidate them: http:// and https://, with and without www, sometimes with and without trailing slashes. Pick one form and 301-redirect every other variant to it in a single hop:
```
# Redirect all HTTP and non-www traffic to https://www.example.com
server {
listen 80;
server_name example.com www.example.com;
return 301 https://www.example.com$request_uri;
}
server {
listen 443 ssl;
server_name example.com;
# ssl_certificate ... (certificate must cover the bare domain too)
return 301 https://www.example.com$request_uri;
}
```
### Self-referencing canonical tags
Every indexable page should declare its preferred URL with an absolute, self-referencing canonical tag. This protects you when the same content is reachable under tracking parameters, sort orders or session IDs:
```
```
A canonical tag is a strong hint, not a command. Google weighs it against redirects, internal links and sitemap entries, so all of those signals should agree. Google's guide to [specifying canonical URLs](https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls) covers the edge cases. The most common launch mistake is canonical tags that still point at the staging domain. Crawl the live site and check for this specifically.
### Thin and duplicate pages
Content management systems generate pages you never asked for: tag archives with a single post, author archives on a single-author blog, attachment pages for every uploaded image, and filtered product listings. Decide deliberately which of these deserve to be indexed. In WordPress, attachment pages should redirect to the file or parent post. Single-post tag archives are usually better as noindex, follow until they grow.
## URL structure and redirect mapping
Good URLs are short, lowercase, hyphen-separated, readable and stable. Decide the structure during planning, because changing it after launch means another round of redirects. Avoid dates in evergreen content URLs, file extensions you might drop later, and deep folder hierarchies that mirror your internal org chart instead of how users think.
### The redirect map for a redesign
If the new site replaces an existing one, the redirect map is the single most important SEO deliverable of the project. The process:
- **Inventory the old URLs.** Combine a full crawl, the old XML sitemap, analytics landing pages and Search Console's top pages. URLs with backlinks matter most.
- **Map each old URL to its closest new equivalent.** Map one to one where you can. Don't redirect everything to the homepage. Search engines tend to treat mass homepage redirects as soft 404s.
- **Implement the redirects as single-hop 301s** at the server or with a redirect plugin. Avoid chains like old → interim → new.
- **Test before DNS changes**, using a script that requests every old URL and checks for one 301 that lands on a 200.
- **Keep the redirects in place long term.** Google's site-move guidance recommends keeping them for at least a year, and in practice there is rarely a reason to remove them at all.
```
# Quick redirect check: each line of old-urls.txt is a full URL
while read -r url; do
result=$(curl -s -o /dev/null -w "%{http_code} %{num_redirects} %{url_effective}" -L "$url")
echo "$url -> $result"
done < old-urls.txt
```
Any line that shows more than one redirect, or a final status other than 200, needs fixing before launch.
## On-page technical elements
### Titles, descriptions and headings
- **Unique on every page**, leading with the page's subject. Search engines may rewrite titles that are vague, stuffed with keywords or duplicated.
- **Meta descriptions** don't directly affect rankings, but they are often used as the snippet. Write them as a short pitch for the page.
- **One clear