Need help?Jamie

Website performance

How to Speed Up Your Business Website and Keep the Design

Your website looks the way you want, but it loads slowly on a phone, and you've been told the fix is to strip out the design. Trojan Digital Marketing speeds up business websites by changing how images, fonts and scripts load, while keeping the design. Jeff Clerisier, our founder, works out the scope with you. The first strategy call is free, and during business hours we aim to reply within five minutes.

Illustrative responsive website design workspace.

See how I'd approach this

Choose a question
to look at with me.

A website built around the next customer decisionMESSAGE · EVIDENCE · ACTION
  1. A clear offer
  2. Evidence for the customer
  3. An action that works on mobile
A website built around the next customer decision

PUT THIS PAGE TO WORK

A homepage release brief that preserves the design

Say your homepage has a bold hero image, moving project previews, testimonials and an interactive tool. Before we change how anything loads, we screenshot the desktop and phone layouts, note the section order and mark the first thing a visitor can tap. In this sample brief, keeping the design is a requirement. We'd turn down any speed fix that breaks it.

For the hero, name the image that must appear immediately and the crop needed on a narrow screen. Specify its intended display dimensions, alternative text and a stable space before loading. Prepare smaller image variants from the same source. The acceptance question is whether the image remains recognizable and sharp enough at its actual displayed size, not whether the smallest possible file exists.

For the moving project preview, define a still frame that communicates the work before the animation begins. The control should work with a keyboard, and the content should remain understandable when motion is reduced. Keep the animation module outside the initial path if its purpose begins farther down the page. That decision should preserve the project story rather than replace it with an unrelated stock image.

Test one realistic mobile visit after the changes: enter the homepage, see the hero, scroll to a project, open the relevant service and submit a permitted test inquiry. Note any layout jumps, slow buttons or missing images next to the speed numbers. A file conversion can pass every test and still fail this visit if a crop cuts off the subject or the contact button gets hard to press. We put the design first on our own homepage too, when we rebuilt it from Framer as a separate Cloudflare build. We kept the original hero artwork. The mobile source is a 252,220-byte PNG, and the AVIF copy the rebuild offers is 58,327 bytes, both at 1300 x 678 pixels. A fresh desktop export came out larger, so we kept the existing WebP. Those are single file sizes, and they don't measure how fast the page loads.

Illustrative working brief, adapt to the actual business
DecisionWorking exampleUsable output
Hero
Original composition with responsive crop
Approved phone and desktop views
Project motion
Useful still frame before interaction
Readable reduced motion state
Conversion
Homepage to service to inquiry
Completed path from page to inquiry

Start with the image converter for source assets, then use the website design service to review the full release.

A fast business site can keep its look and its interactive tools, as long as each piece earns what it costs to load. We'd rather move a feature later in the load order than delete it, and we won't add one without measuring what it does to the page.

This guide follows what a visitor needs to do: understand the offer, find evidence, use a tool if it helps, then take the next step. Set any speed budget for the site in front of you and check it with measurements, since no single number fits every project.

Begin with the page's essential job

Give each part of the page a jobOfferEvidenceAction
Offer
Explain what the customer can get.
Evidence
Support the offer.
Action
Make the next step easy to use.
Give each part of the page a jobThe offer, evidence and contact route should work together on a small screen.

Choose a representative homepage, service page, article, and tool route. For each, write the minimum useful experience. A service page needs a clear offer, scope, location information, evidence, and contact action. An article needs readable text and sources. A tool needs understandable inputs, trustworthy results, and a way to use the output.

Now list everything loaded before the visitor does anything: images, fonts, videos, analytics, chat, maps, carousels, animation libraries, and shared code. Ask which items directly support that minimum experience. We take that list to the designer, because a named file is easier to talk through than a request to make the site lighter.

Measure loading, responsiveness, and stability separately

Google's Web Vitals documentation identifies three current Core Web Vitals: LCP for loading, INP for interaction responsiveness, and CLS for visual stability. The good thresholds are 2.5 seconds, 200 milliseconds, and 0.1 respectively, assessed at the 75th percentile of visits with mobile and desktop considered separately.

Visitor experienceUseful questionTypical inspection target
Main content takes too long to appear
What is delaying the largest visible element?
Server response, image discovery, critical resources
A click feels delayed
What work blocks the response?
Event handlers, large rendering work, loaded scripts
The page moves unexpectedly
What appears without reserved space?
Images, embeds, fonts, expanding interface sections

We use a lab test to check one change at a time, and real visitor data, where the site has it, to see what people actually get. The two answer different questions. A good lab score describes the test conditions only; it doesn't promise every visitor the same speed.

Give the hero image a clear delivery plan

On a slow page, the first thing we check is which image or text block the browser reports as the largest one on screen. It isn't always the picture your team calls the hero. Inspect what the browser loads and when it discovers that resource. A visually simple page can still delay its key image behind unnecessary script execution.

The web.dev LCP guide explains the importance of early resource discovery and avoiding lazy loading for the likely LCP image. Use that guidance to review the implementation rather than adding a preload to every file. Competing priorities can erase the benefit of prioritization.

Choose image dimensions appropriate to where the asset appears. Export an efficient format when it preserves the needed appearance, provide responsive variants, and inspect the result on a real display. A file can be technically small but visibly damaged. Keep the original artwork available for future changes so repeated compression does not become the editing workflow.

Give images intrinsic dimensions or an appropriate aspect ratio. The layout should know how much space to reserve before the image arrives. This is especially useful for case study previews where several images appear further down the page.

Reduce typography cost without losing character

Include the work around media spendMediaLanding pageMeasurementManagementPlanning scope
Media
Advertising spend.
Landing page
Work on the destination page.
Measurement
Tracking and review.
Management
Campaign planning and upkeep.
Include the work around media spendA planning budget separates media, page work, measurement and management. Blocks do not represent spending shares.

Identify the families and weights actually used. A site that inherited several design iterations may load more typography than a visitor ever sees. Keep the display face that gives the brand its character and a readable body face, then remove unused variants after checking the pages that rely on them.

Review line wrapping with the fallback font and the final font. A headline that jumps between three and five lines can move important content. Test at narrow widths and with long real headings, not only the shortest example on the homepage. Typography is part of both performance and layout quality.

Load a feature when its purpose begins

An interactive map near the bottom of a service page can be valuable, but it does not necessarily need to load during the first screen. Show a useful coverage description and a lightweight preview. Load the interactive map when the visitor requests it, while retaining a text alternative or ordinary directions link.

Use the same reasoning for video, large galleries, and optional tools. A visitor reading an article should not download the code for every calculator on the site. Route specific loading keeps each page responsible for the features it actually offers.

For example, the Search Opportunity Finder needs table parsing when the visitor uses that tool. The homepage can explain and link to it without importing the parser. The AI Answer Kit can have its own output logic without adding that code to every location page.

Make interactions responsive by design

Short, meaningful state changes can make a site feel capable without an animation framework. A selected control can move a thin rule, reveal a useful answer, or highlight supporting evidence. Keep the layout stable and the result immediate enough that the visitor understands the action succeeded.

When an interaction is slow, inspect the work it triggers. The web.dev INP guide covers reducing long tasks and unnecessary main thread work. For a large table tool, practical options include processing manageable chunks and showing a summary before thousands of rows. Measure the chosen approach with a realistic input.

Respect reduced motion preferences and avoid requiring a drag or hover to use an essential control. A useful interaction should retain its function when motion is removed. Test keyboard focus and error states as carefully as the polished default view.

Audit third party code as a business decision

Connect an observation to a decisionEventRecordMeaningDecisionCheck definitions at every step
Event → record
Define the event and check the record.
Meaning → decision
Review the business meaning before acting.
Connect an observation to a decisionDefine the event, check the record, review its business meaning and choose the next action.

For each external script, name its owner, purpose, pages where it is needed, and what would break if it were removed. This can reveal abandoned tracking tags, duplicate widgets, or tools added for a campaign that has ended. Remove only after checking the dependency and measurement implications.

Delay optional features appropriately, but do not hide a broken measurement setup behind a better score. The business needs reliable analytics and a usable site. Document the tradeoff and verify the actual event or contact flow after a change. A fast page that silently loses all inquiries is not a successful optimization.

Use hosting and caching for the problems they can solve

Efficient delivery helps, but hosting cannot make unnecessary client side work disappear. A large script still needs to arrive and execute. An oversized image still needs to be decoded and displayed. Review the full path from request to usable page rather than treating a hosting migration as a complete performance fix.

When caching is part of the solution, check that published changes reach visitors as intended. Confirm that contact details and service information are current after deployment. Keep personalized or sensitive results out of shared caches. The caching plan should match the page's actual content and update needs.

Verify one complete customer journey

On a narrow phone viewport, open a service page, read the offer, inspect evidence, reveal the map if present, and start the contact flow. On a tool page, enter realistic data, trigger a validation error, correct it, and download or copy the result. Check that the page responds without unexpected movement.

Record the conditions used for performance checks and repeat the same comparison after the change. Broaden testing when a concrete risk remains, such as a large input, a slow device, or a font that wraps differently. Avoid chasing tiny score fluctuations once the experience and required gates are sufficiently verified.

For search context, read the website performance and growth overview and the search opportunity workflow. Trojan's website design service can apply this playbook to a distinctive site with clear performance budgets, useful interactions, and a customer journey that remains easy to use.

A migration decision from our own website

How we are carrying the Trojan website from Framer into a separate Cloudflare build

The practical challenge is familiar to a business that likes its website but wants better delivery: keep the recognizable design, preserve useful pages and make the files do less unnecessary work. Our own migration provides a concrete example. The original Trojan hero artwork, existing content identities and page addresses are part of the brief. The Framer original is retained while the separate build is reviewed. As of September 8, 2026, this is a private build prepared for Cloudflare, before the public domain move.

Start with the pages customers already know

We compared the original CMS records with the current content collection by identifier, page path, slug and original publication date. All 28 original records retained those values. This matters when an older article has been shared, bookmarked or linked from another website. The content can be improved at its existing address, with the same record remaining available for future editing.

Preserving an address is one part of migration quality. The replacement must also retain the page's useful purpose, appropriate links and relevant media. A record count alone cannot establish that the new page answers the visitor's question. Our review therefore treats content continuity and visual continuity as separate decisions to inspect.

Keep the actual artwork and offer suitable image files

Original Trojan Digital Marketing homepage artwork with blue circular service illustrations
Original homepage artwork retained in the rebuild. This is an artwork reference, not a before and after website screenshot.

The original desktop and mobile source images both measure 1300 × 678 pixels. The rebuilt homepage offers each source in AVIF and WebP, with widths of 480, 960 and 1300 pixels. The browser can choose among those files using the screen size and supported format. Keeping a separate mobile source preserves the intended artwork instead of substituting an unrelated stock image.

File evidence measured September 8, 2026. Each full size file below is 1300 × 678 pixels.
Source choicePreserved sourceCurrent delivery filesImplementation decision
Desktop hero
WebP, 56,688 bytes
WebP, 56,688 bytes. AVIF, 38,176 bytes.
Compare each export with the existing compressed source.
Mobile hero
PNG, 252,220 bytes
WebP, 114,214 bytes. AVIF, 58,327 bytes.
Offer smaller formats while retaining the mobile artwork.

The preserved desktop WebP is used for the full size WebP fallback. An additional export was larger, so retaining the original avoids adding bytes merely to call the file optimized. The mobile figures compare different formats at equal dimensions. These are individual file sizes, not a claim about the original website's total download size or a measured percentage improvement in loading time.

Make the hero appear as part of the page

The homepage declares the hero in its image markup with its dimensions, eager loading and high fetch priority. It does not wait for a scroll to request that first screen image. This follows the resource discovery principle in Google's LCP guidance. It still requires a browser measurement to establish which element actually determines LCP on a particular visit.

The visual treatment also changed deliberately. A soft vertical gradient blends the top and bottom into the dark page, with the middle clear and no horizontal side fade. The image retains its natural proportions. That addresses the hard rectangular edge without adding another large image, a video layer or an animation dependency to perform the blend.

Give the hosting move its own acceptance checks

The image variants are included with the website's static assets. Cloudflare documents static asset delivery and caching across its network. That is a delivery mechanism, not proof of a particular mobile experience. A broken asset reference or unnecessary script still needs a direct fix.

The recorded checks cover source routes, content identities, local image references and generated page markup. The offline rendering uses an empty database adapter. It cannot establish live CMS behavior, browser interactions, inquiry delivery, public HTTP responses or real visitor Core Web Vitals. Those distinctions make the evidence useful: we can identify what has been inspected without presenting preparation as a completed public launch.

Use this evidence to plan your own migration

Ask for a page preservation list, representative visual references, measured asset choices and a customer journey to verify before moving the domain. Google's hosting migration guidance separates copying and testing from the actual domain routing change, followed by traffic and crawl monitoring. Keeping those stages visible helps the business assess the release.

For a different example of how visuals support a customer's decision, see the Moto Supreme cabin website design study. For your own site, discuss the pages, artwork and customer actions your migration needs to preserve.

Sources & further reading

Need our help with this on your own site?

Request a free strategy call

The first strategy call is free, and during business hours we aim to reply within five minutes.

Compare the same page under recorded conditions

A release comparison needs a clear page version and repeatable conditions. We would establish those inputs before deciding whether the change improved the visitor's task.

What should we record before the first comparison?
Name the exact page and the version being assessed. We would also record the browser, screen dimensions, and the test conditions that matter to the task. A result from one page shouldn't be paired with a result from a different revision. Keep the page content clear enough that another person can repeat the same visit.
Why can two scores differ without a meaningful release change?
The runs may use different devices, network conditions, or page states. We would compare those inputs before attributing the difference to the code. A changed test setup can be a valid investigation, but it answers a new question. Keep it separate from the controlled release comparison.
How should we choose the page state?
Use the state that belongs to the customer task. A closed panel and an expanded answer may have different layouts. We would name which state is measured and capture the same one after the change. If another state could reveal a defect, add it as a separate case rather than mix both into one result.
Performance comparison acceptance notes
Question or recordBusiness inputAcceptance check
Page versionThe team identifies the tested route and the specific revision on each side of the comparison.We confirm that any content difference is understood before reading a layout or speed difference as a regression.
Image deliveryThe team records the image chosen by the browser at the tested size and its rendered appearance.We check the actual requested file and visible crop so a smaller file is not accepted solely on its byte count.
Interaction taskThe buyer names the action a visitor must complete in the tested state.The comparison includes that action and its observed result, with untouched tasks left unclaimed.
Unresolved causeThe record describes a failure whose cause has not yet been established.We keep the failed result visible and identify the next check instead of changing the acceptance rule to make it pass.

A useful comparison is specific enough to repeat. We would ask the team to keep the original conditions in a small working note and use them for the next check. If a requirement changes, record that change before the next run. The result should say which question it answers.

Our proposed performance work can include a representative release comparison, with the selected pages named in the agreement. That doesn't establish every page's behavior. A buyer can assess the defined task directly while deciding whether another route needs attention because of a shared change.

Check the rendered image as well as the delivered file

An image change should preserve the subject and layout required by the page. We would compare the displayed result using the same screen conditions.

Texas Journeyman Prep homepage with two choices
Image change: Texas homepage shows distinct visitor task choices. View the project
Hypothetical example A fictional release changes image delivery while keeping the customer task and comparison conditions fixed.

Before

  • The original page shows a project photograph beside a link to its details. The team proposes another export of the same source image. An initial report lists fewer bytes but doesn't show what the browser displayed or which file it selected.
  • The task is to identify the project and open its details on the agreed phone screen. We would keep that task unchanged so the release comparison can assess the new delivery choice.

After

  • Our proposed check would record the requested image and capture its appearance at the same dimensions. The team would compare the crop and readable context beside it. A file-size difference would remain distinct from a measured loading result.
  • The visitor task would then be exercised on the changed page. If the subject is lost or the link is covered, that result remains a defect to fix. This example includes no perfect score or claimed performance gain.
  • Check the file the browser actually requested. We would avoid judging only the export folder when the page may still select an older variant or a different size.
  • Use the intended page width to assess clarity. A full-size image inspected in an editor doesn't establish how its subject appears inside the final layout.
  • Keep the surrounding label visible. Our comparison should detect when a crop or spacing change makes the pictured choice harder to identify.
  • Read the old and new capture with the same content state. We would document a deliberate layout change separately so it isn't confused with an unintended image regression.
Can an image look different even when the source is unchanged?
Yes. The rendered dimensions or crop may change. We would inspect the actual page treatment rather than infer continuity from the source file name. A comparison should identify whether the difference was intended and whether the subject remains appropriate for the customer's task.
Should every visual difference fail the release?
The acceptance rule should follow the brief. Some projects require an unchanged composition; others approve a specific design revision. We would establish that boundary before comparing. Keep any allowed difference explicit so it doesn't become an excuse for an unrelated defect.
What if the image changes the nearby text wrapping?
Check the actual lines at the agreed size. We would ask whether the new image dimensions changed the space available for the label. A heading may now wrap onto another line or move the action farther down the screen. Record that visible result alongside the image itself. The team can then decide whether the layout still meets the brief. A small file can have a larger space reserved for it, so delivery size doesn't explain the whole change. We would inspect the browser's rendered view and the intended composition together. Keep the final wording in the comparison so short placeholder labels don't hide a problem that the real page still has.

Give each interaction a repeatable starting state

An interaction comparison needs the same starting state and action. We would record what the visitor does and what the interface should show afterward.

  1. Name the beginning of the task Describe the page state before the action. We would note whether the answer panel is closed, which option is selected, and what text is present. That gives the next reviewer a concrete start rather than an instruction to try the interface.
  2. Perform the defined action Use the method that belongs to the case, such as a keyboard action or a pointer click. Our comparison should keep that method consistent. A different input method may deserve another case, especially when the control's behavior depends on it.
  3. Read the resulting state Check the visible answer, focus position, and any preserved input that the task requires. We would record a failure even if the page looks polished. The result should describe what happened when the customer used the control.

A successful first click doesn't show whether the control can return to its earlier state. We would include closing or resetting when that belongs to the customer's task. For a tool, an invalid input followed by a correction can reveal state problems that a clean example misses. Keep those cases tied to the specific release change.

An interaction may also change what the browser requests. We would ask whether the new request is expected for the feature and whether its failure is understandable. If an optional file can't load, the user needs an accurate state. A hidden error shouldn't be accepted because the performance summary looks better.

How do we check an action that would contact the business?
Agree a safe test with the business before submitting anything. We can inspect labels and native field checks without sending a real inquiry. End-to-end delivery needs its own authorized case. A blocked submission cannot be described as a completed contact task.
Can a clipboard check stay local?
Yes. When the intended task is copying a result, we would inspect the local copied text with an appropriate test setup. There is no need to paste private material into an external service. The finding should state which copy action and result were actually checked.
Does one measured click represent all interactions?
No. It establishes the defined action under its recorded conditions. web.dev's INP guidance discusses interaction responsiveness and the work affecting it. We would use that guidance to investigate a delayed action while leaving other controls outside the claim until checked.

Keep a failed comparison visible while finding its cause

A failed release check needs a named next investigation. We would preserve the result and assign the cause check to the person responsible for that part.

  • Describe the actual difference in the record. We would say which element moved or which action failed, using the tested page and state. A broad note saying performance is worse gives the next person little to inspect.
  • Check whether the setup changed before diagnosing the application. Our first question is whether both runs reached the same assets and state. A test setup defect still needs correction, with its original finding retained.
  • Separate a diagnosed test problem from an application change. We would document the reason for correcting the setup and rerun the same acceptance rule afterward.
  • Leave unexplained differences open. Our report should not describe a suspected cause as established merely because it sounds plausible.
  • Agree who decides whether a remaining issue blocks release. The buyer should know which requirement is affected and what is still unverified before that decision.
What if a missing image came from the test setup?
Establish that cause with the actual request and response. We would correct the setup and repeat the original comparison. Preserve the earlier failure and the diagnosis so a reviewer can see why the new run is valid. The acceptance threshold should not change just to hide the missing image.
Can the team waive a visual difference?
The responsible buyer may approve a deliberate difference after inspecting it. We would record the specific change and its reason. A waiver for one element doesn't apply to other unexplained changes. The final comparison should distinguish approved design work from unresolved defects.
When should the team broaden the comparison?
Broaden it when the change or failure gives a concrete reason. A shared control change may affect more than one page. We would select representative additional cases that exercise that dependency. Repeating unrelated checks adds less information than choosing the page that can reveal the suspected problem.

Our role in a proposed release comparison is to make the result assessable. Keep the tested state and failed behavior close to the next action. A buyer should be able to understand what remains before accepting the change. That is more practical than an unexplained score or a list of files with no customer consequence.

Use an actual app screen without treating it as a benchmark

A real product screen can show the task being discussed. We would keep its visible design distinct from measured behavior that requires a test.

Jev scanner website input and scan action
Real screen: Scanner screen has a website starting input. View the project

The pictured app helps a buyer identify the kind of screen we mean. It doesn't establish how quickly the page responds on a particular device. For a release involving a similar result view, we would choose the actual input and expected state. The acceptance record needs those details in addition to a screenshot.

A static capture can support a visual comparison of an unchanged state. A performance finding needs recorded conditions and measurements. We would keep both forms of information because they answer different questions. Neither should be expanded into a claim about every user of the app.

What can a screenshot establish by itself?
It can show the visible arrangement at the captured moment. We would identify the page state it represents. The image can't establish that a button works, that a form reaches staff, or that a metric improved. Those claims need matching checks rather than a polished product view.
How should a buyer request a comparable screen?
Name the state they need preserved and the content that belongs in it. We can discuss which capture conditions allow a meaningful comparison. A result page with different data may wrap differently for valid reasons. Keep the input constant when the task is to assess the release's layout change.
Can we use a project photo to infer another site's performance?
No. The reference provides visible context for the discussion. We would assess your site's delivery and task directly. A similar design can use different assets or behavior, so a project screenshot does not supply its timing or reliability.
  • Ask which part of the screen is essential to the visitor's next action. We would make that part explicit in the comparison brief.
  • Keep text content constant when checking line wrapping. Our record should identify a content change that would otherwise make the two screenshots incomparable.
  • Record a missing state instead of substituting a more convenient one. The final result should reflect the task the buyer actually agreed to assess.

Accept the defined release with its limits attached

The final record should state which checks passed and what remains open. We would connect each finding to the release version the buyer is assessing.

  1. Tie results to the final revision Confirm that the measured page belongs to the release being accepted. We would rerun an affected check after a relevant change. A result from an earlier revision cannot establish the behavior of code added afterward.
  2. Keep distinct outcomes distinct Label a passed check, a failed check, and an unrun check accurately. Our record should also identify any deliberately blocked action. A prevented inquiry submission protects the business during a limited test but leaves delivery unverified.
  3. Name the remaining business consequence Explain what an unresolved issue means for the visitor's task. We would let the buyer assess that concrete limit. A small visual difference and a broken contact action have different consequences even when both appear in one comparison report.
What should the buyer receive before accepting the work?
The agreed record should identify the release and tested tasks, with results that can be inspected. We would include relevant captures or measurements where they help assess a finding. The project agreement determines the deliverables. A performance guide doesn't itself promise a particular report package.
Does acceptance establish real visitor Core Web Vitals?
Only the data actually collected can support that claim. web.dev explains the role of field measurements alongside lab tools. We would describe a controlled release comparison as that comparison. If real-user data is unavailable, the record should leave that visitor population unmeasured.
How can we start a focused performance conversation?
Bring a page and the action that feels unreliable, with any existing comparison record. We can discuss the conditions needed to assess it and the release behavior you want to preserve. That creates a concrete starting task without promising a universal score or a fixed outcome.

Sources