Search engine optimization by design
Clear to search engines.Read live from this page.
Search engine optimization is not a layer added at launch. On our new system it is built into every page: its own title and description, one address stated the same way everywhere, languages that name each other, structured data that says only what the page shows. No one can promise a ranking, and we do not. Here is what a search engine is given, read live in your browser.
Readings are taken live from this page and from this site’s own files. Diagrams are illustrative where marked.
01 · The page
Every page speaks for itself.
A search result and a shared link are assembled from what a page says about itself. This one states its own title, its own description, its own image, and one address, written identically in four places.
01 · In a search result
—
—
02 · In a shared link
—
—
—
03 · One address, four places
Compared whole, character by character. Shown as paths.
| Place | Address, as a path | Comparison |
|---|---|---|
| Canonical tag | — | — |
| Share card | — | — |
| Structured data | — | — |
| Sitemap | — | — |
| — | ||
Reading this page…
A search engine or an app lays out a result as it chooses, and may rewrite it: these frames are drawings of what the page states.
How this is read
The words · live
Everything inside the two frames is read in your browser from this page’s own head, once its address tag matches the address bar: the title, the description, the share card’s title, description and image, the site’s icon and name, and the breadcrumb names in its structured data. A length counts each character once. Nothing is sent anywhere.
The frames · illustrative
The two frames are drawn in this site’s own style. They copy no search engine and no app, and stand alone, with no other result beside them. What a search engine or an app shows is its own decision; it may rewrite a title or pick other words.
The four places · live
The canonical tag, the share card’s address and the structured data are read from the page; the sitemap is this site’s own file, asked for once per visit. The four full addresses are compared as written, character by character. Only their paths are printed, with one mark for the origin they share.
Home and About
Pressing another page asks this site for it once, reads its head without running it, and looks its address up in the same sitemap. The picture shown is the one that page names, cut by this site to the size it is painted.
Without its own words · illustrative
A drawing of this same page stating nothing: the site’s name alone for a title, the first characters of the page in reading order for a text, read from the page as it stands, an empty image frame and no address.
| Field | Read from | As stated | Reading |
|---|---|---|---|
| Title | title | — | — |
| Description | meta · description | — | — |
| Share card, title | og:title | — | — |
| Share card, description | og:description | — | — |
| Share card, image | og:image | — | — |
| Canonical tag | link · canonical | — | — |
| Share card, address | og:url | — | — |
| Structured data | ld+json · url | — | — |
| Sitemap | sitemap · loc | — | — |
02 · Two languages
French pages live at French addresses.
Each page names its twin in the other language, and the twin names it back. The French address is written in French, from one table, whole words at a time: /showcase becomes /fr/projets.
01 · This page
Reading this page…
02 · The whole site
| English address | French address | French words of its own | Reciprocal |
|---|
03 · Counted in the sitemap
- Pairs read
- —
- One address per language.
- Reciprocal
- —
- Both entries exist and each lists the other.
- French words of their own
- —
- The rest are French as they stand.
Reading this page…
Read just now from this page and the sitemap. The tags give a search engine what it needs to offer the right language; the choice stays its own.
How this is read
This page · its own head
The language is the one the document declares on its root element. The language tags are the alternate links in its head, each a language code and an address: one per language and region, one per language alone, and a default for everyone else. Each flag points to the address it names. They give a search engine what it needs to offer the right language; the choice stays its own.
The site · the sitemap
The sitemap is fetched once and read in your browser. Each entry lists its own address and the same page in the other language. A pair is reciprocal when both entries exist and each lists the other. It has French words of its own when its French address is not simply /fr followed by the English one. The legal pages are not listed in the sitemap, so they are not counted.
The twin · on a press
Until you press, nothing is asked of the other page, and reciprocity is the sitemap’s. The white button makes one request for the twin, on this site, and reads its head the same way: its language, its own address, its language tags. Replaying asks nothing again.
The translator · the site’s own table
The French address is produced by the function behind this site’s language switch: one table of whole words, the longest entry first, so /expertise/privacy is never read as /privacy. This pairing applies where a site has two languages; not every site is bilingual.
03 · Structured data
Data that says only what the page shows.
Beside the words you read, each page carries a short description for machines. The studio and the site are declared once; each page adds itself and points to them. No invented rating, nothing the page does not show.
—
Its trail —
- —
The facts it states
Added by the page itself
- Name
- —
- Place
- —
- Languages
- —
- Subjects
- —
- —
- Telephone
- —
- Name
- —
- Address
- —
- Languages
- —
- Description
- —
- Address
- —
- Name
- —
- Description
- —
- Language
- —
- Image
- —
Not shown on the page, so not in its data
Reading this page…
- — —
- — —
- — —
- — —
Read in your browser, from this page’s own markup. Another page is asked for only on a press, and only once.
How this is read
- Where it sits
- The description is written in script blocks in the page’s source, inside the body. One block comes with every page and declares the business and the site; the page’s own block declares the page and its trail. The stage parses each block, lays the entries side by side and indexes them by identifier.
- The frames and the notches
- A reference is any property whose value holds nothing but an identifier. The nesting is drawn from them: the page says it is part of the site (isPartOf), the site names the business as its publisher (publisher). The page also says who it is about (about) and where its trail is (breadcrumb). An entry of a type this drawing does not expect takes a plain frame of its own.
- The match marks
- Each one compares two pieces of text in your browser: the entry’s address with the canonical tag, its name with the start of the title tag, its description with the description tag, its language with the language the page declares, its image with the share image. The business’s email and telephone are compared with the mail and phone links on this page, and their values are not printed here. Addresses are shown as paths, images as file names.
- What is searched for
- Every entry is searched, at any depth, for these keys: aggregateRating, review, openingHours, openingHoursSpecification and streetAddress. A key that turned up would fill its socket and change the count.
- Another page
- About and Contact are fetched whole, once, on a press, and read the same way. The business and the site of each page are written back out as text and compared character by character.
- What this does not say
- The subjects the business lists and its profile link are not compared with the page. And this reading says what the data states, not how a search engine will show it.
- On other kinds of site
- Shops built on our new system state each product’s price and stock. Some of the sites we have built for local businesses state their trade, hours and area served.
04 · The maps
One map for search engines. One for AI assistants.
The sitemap lists every page meant for search, in both languages, each dated by the day its content last changed, not by the build. The same pages are written out in plain text for AI assistants. Both are read here, live.
Reading this site’s files…
In the sitemap
- EnglishEN
- —
- FrenchFR
- —
- ChangedDate
- —
—
How this is read
The sitemap · live
The site’s sitemap is fetched once and read as written: each address, the other-language address it names, and its date. The tree is the English addresses split by segment. Dates are the file’s own, compared as days in UTC, so every reader sees the same day. Search engines can read this list; a listed page is not thereby an indexed one.
The map for AI assistants · live
A plain-text file generated from the same content as the pages, refreshed at most once a day, so the comparison says what it finds. Only lines of the form “- [name](address): note” that point to this site’s own pages are counted or shown, and addresses are shown as paths. No assistant is promised to read it.
Kept out · what the site’s code sets
The privacy policy and the terms are named from the site’s own table of addresses, and their absence from both files is checked here. The site’s code also marks them as not for search; that mark is stated, not read on this stage. The robots file is read as written: its groups of readers and what each allows.
05 · Continuity
Old addresses still arrive.
A rebuilt site changes its addresses; the links pointing at it do not. Each old address is sent, permanently and in one step, to the page that replaced it, never all of them to the home page. Six of ours are walked below.
Asking this site’s server…
This site’s server could not walk its own addresses here. Nothing is guessed.
— of — arrive on a working page, each in one permanent step.
— addresses, — destination. Every old link lands on the home page.
| Old address | Answer | Arrives at | Page |
|---|---|---|---|
| not turned yet | not turned yet | not turned yet | |
| not turned yet | not turned yet | not turned yet | |
| not turned yet | not turned yet | not turned yet | |
| not turned yet | not turned yet | not turned yet | |
| not turned yet | not turned yet | not turned yet | |
| not turned yet | not turned yet | not turned yet |
- a missing page
- a temporary redirect
- a chain
Our practiceEach old address goes to the page that replaced it, never all of them to the home page.
Press an old address to try it yourself. It opens in a new tab.
Walked by this site’s own server · — · each old address asked without following its redirect, then followed to the page it reaches
How this is checked
- The walk
- A browser cannot read a redirect’s status or count its steps, so this site’s own server does: it asks for each old address without following the redirect, notes the answer and where it points, then follows it to the page it reaches and notes that page’s status. It takes no input and asks only this site.
- Permanent
- “Permanent” is the server’s own answer: a redirect that says the move is for good. A temporary redirect, a chain of several steps or a missing page would show on the board with a dashed outline and a hollow mark, and the sentence above it would count it.
- The time
- The walk is made once and kept for up to an hour, so a visit costs one read; the time on the board is when it was made. Replay turns the board again from the same walk: nothing is asked twice.
- A blanket redirect
- A drawing of a common shortcut when a site is rebuilt, no particular site: every old address sent to the home page. The addresses are this site’s; the destination and the last column are drawn.
06 · The proof
Thirteen things in place. Then one switch.
A new site is built in private, with search switched off. Thirteen things are put in place and checked first, then one switch opens it. Here are the same thirteen, read from this page, and the three answers that switch gives.
In place before opening
What people see
Where it lives
What it means
Who may read it
— of 13 in place
A search engine asks
May I crawl?May I crawl?
not read yet
the robots file
May I list this page?List this page?
not read yet
this page’s robots tag
Which pages are there?Which pages?
not read yet
the sitemap
Reading this page…
Read in your browser, from this page and four of this site’s files.
How this is read
Everything here is read in your browser when this section comes near the screen, each thing once: this page’s own tags, the copy around the readings, and four of this site’s files. The readings stay in your browser, and a replay asks for nothing again.
The thirteen readings
- Title and description
- title · meta[name="description"]
- One address
- link[rel="canonical"] · og:url
- Share card
- og:title · og:description · og:url · og:locale · og:locale:alternate · og:type · og:site_name · twitter:card
- Preview image
- og:image · og:image:alt
- Language tags
- link[rel="alternate"][hreflang]
- Structured data
- script[type="application/ld+json"]
- Search policy
- meta[name="robots"] · /robots.txt
- Sitemap
- /sitemap.xml
- Icons
- link[rel~="icon"] · link[rel="apple-touch-icon"]
- App manifest
- link[rel="manifest"]
- Map for AI assistants
- /llms.txt
- Keywords
- meta[name="keywords"]
- Visits counted
- script[data-website-id]
The robots file, rule by rule
—
The closed side · drawn
The three closed answers are a drawing of what the same code gives before a site opens: everything disallowed, no indexing, an empty sitemap. The answers marked live are the ones read just now.
The page as served
This page is also asked for once as plain text and parsed without running any script: what a search engine is given first. Its tags are then compared with the ones read in the live page.
After opening
Once a site is open, a person registers it with the search engines. Speed is not read here; it has a page of its own: Performance by design
| Thing | Found | Read from |
|---|---|---|
| Title and description | not read yet | this page’s title tag and its description tag |
| One address | not read yet | this page’s address tag, compared with the address its share card states |
| Share card | not read yet | the share tags in this page’s head |
| Preview image | not read yet | the share card’s image tag and the text that stands in for it |
| Language tags | not read yet | the language tags in this page’s head, one for each language and region |
| Structured data | not read yet | the structured data blocks this page carries |
| Search policy | not read yet | this page’s robots tag and this site’s robots file; their answers stand past the gate |
| Sitemap | not read yet | this site’s sitemap, where this page is listed with the day its content last changed |
| Icons | not read yet | the icon links in this page’s head |
| App manifest | not read yet | the manifest link in this page’s head, then the file it names |
| Map for AI assistants | not read yet | this site’s plain-text map for AI assistants, where this page is listed |
| Keywords | not read yet | this page’s keywords tag; each keyword is then looked up in the page’s own copy, around the readings |
| Visits counted | not read yet | the live page: the visit counter is added after it loads, on the live site only |
| Question | Answer | Read from |
|---|---|---|
| May I crawl? | not read yet | the robots file |
| May I list this page? | not read yet | this page’s robots tag |
| Which pages are there? | not read yet | the sitemap |
The practice
Being found starts with being read.
No studio can promise a position, and we do not. What we can do is remove every reason a search engine might misread you: two addresses for one page, a French page with no twin, a description that claims what the page does not show, an old link that leads nowhere. We write those decisions down, check them before a site opens, and check again once it is live.
What this page shows is our new system, the way we build today. Sites we delivered before it may not include it.
Want a site search engines read correctly?
Send us your address. We will read it the way this page reads itself.
