Web-Check Glossary

Pick an article on the left or use the search – for every check area you'll learn what it means and how to fix it.

Performance

Security

SEO

Privacy

Image

Usability

Accessibility

AI visibility

Technology

Performance

How do I create WebP images?

Problem: Large JPG/PNG files are the most common cause of slow load times, especially on mobile.

Why it matters: At the same quality, WebP is about 25–35 % smaller and is supported by all modern browsers.

How to fix it:

  • Upload the image to the free Elementor Image Size Converter
  • Choose WebP as the target format and a suitable width (usually max. 1600–1920 px)
  • Download it and upload to WordPress, replacing the old image
  • Then clear the Elementor CSS and cache

Recommended tool: Elementor Image Size Converter

Go to WebP Converter →
Performance

Why upload images at the right size?

Problem: Images are often uploaded much larger than they're displayed (e.g. 4000 px in a 600-px slot).

Why it matters: Every oversized image wastes load time and visitors' data.

How to fix it:

  • Check the display width in the browser (right-click → Inspect)
  • Scale the image to about twice the display width (for sharp Retina displays)
  • Export as WebP and only then upload it

Recommended tool: Elementor Image Size Converter

Resize image →
Performance

What does browser and page caching do?

Problem: Without caching, every page is regenerated by the server on every visit.

Why it matters: Caching serves ready-made pages and noticeably reduces load time and server load.

How to fix it:

  • Install a caching plugin (e.g. LiteSpeed Cache, free, or WP Rocket)
  • Enable page caching as well as GZip/Brotli compression
  • Clear the cache after every major change
Performance

How do I measure my load time (Core Web Vitals)?

Problem: Google evaluates the loading experience using the Core Web Vitals (LCP, INP, CLS).

Why it matters: Poor scores hurt your ranking and drive visitors away.

How to fix it:

  • Enter your URL into Google PageSpeed Insights
  • Aim for LCP under 2.5 s and CLS under 0.1
  • Tackle the biggest bottlenecks (images, scripts) first

Recommended tool: Google PageSpeed Insights

Test load time →
Performance

What does the overall performance score mean?

Problem: The score (0–100) combines your page's Google Lighthouse metrics into a single grade.

Why it matters: It shows at a glance how fast your page feels – especially on mobile, where Google measures strictly.

How to fix it:

  • Check the individual metrics (LCP, TBT, CLS, Speed Index) and tackle the weakest one first
  • Work from the mobile score – it's usually lower than desktop
  • Measure again after every optimization

Recommended tool: Google PageSpeed Insights

Test load time →
Performance

Improving LCP (largest element loads too slowly)

Problem: LCP (Largest Contentful Paint) measures when the largest visible element – usually the hero image – finishes loading. Good is under 2.5 s.

Why it matters: A slow LCP makes the page feel like it's stalling and costs you ranking and visitors.

How to fix it:

  • Deliver the hero image as WebP and in the right size
  • Preload the LCP image (<link rel="preload">) instead of delaying it with lazy loading
  • Improve server response time and caching

In detail

LCP measures when the largest visible element finishes loading – usually the hero image or a large heading. Visitors feel the page has “arrived” as soon as this element is in place.

Step by step:

  1. Deliver the large image as WebP and in the right size (no 4000-px image for a 1200-px slot).
  2. Preload the LCP image (<link rel="preload">) and do not delay it with lazy loading.
  3. Improve server response time and caching (see TTFB).

Rule of thumb: under 2.5 s = good, 2.5–4 s = needs improvement, above that = poor.

Recommended tool: Elementor Image Size Converter

Go to WebP Converter →
Performance

Fixing CLS (layout shifts while loading)

Problem: CLS (Cumulative Layout Shift) measures how much content shifts around while loading. Good is a value under 0.1.

Why it matters: Jumping buttons and text lead to mis-clicks and feel unpolished.

How to fix it:

  • Specify a fixed width/height for images and videos so space is reserved
  • Set fixed container heights for ads/embeds
  • Load fonts with font-display:swap to avoid jumps

In detail

CLS happens when content is still shifting while loading – e.g. an image without reserved space pushes the text down, right as you're tapping a button.

Common causes & fixes:

  • Images/videos without dimensions → always specify width and height, so the browser reserves the space.
  • Ads/embeds → set a fixed container height.
  • Web fonts → load with font-display:swap so there's no line-wrap jump.

Rule of thumb: CLS under 0.1 is good.

Recommended tool: Google PageSpeed Insights

Test load time →
Performance

Reducing Total Blocking Time (TBT)

Problem: TBT (Total Blocking Time) measures how long the page fails to respond to input while loading – caused by heavy JavaScript.

Why it matters: A high blocking time makes the page feel sluggish, with clicks and scrolling lagging.

How to fix it:

  • Remove unnecessary JavaScript
  • Split scripts and load them with defer/async
  • Reduce third-party scripts (chat, tracking)

In detail

While loading, the browser executes JavaScript. As long as a script is running, the page does not respond to clicks or scrolling – these wait times add up to the blocking time.

  1. Remove unnecessary JavaScript (chat widgets, old plugins, duplicate trackers).
  2. Load scripts with defer or async so they don't block the page from rendering.
  3. Split large scripts so the browser can respond to input in between.

Rule of thumb: under 200 ms is good.

Recommended tool: Google PageSpeed Insights

Test load time →
Performance

Improving the Speed Index

Problem: The Speed Index measures how quickly visible content appears while the page is loading.

Why it matters: The sooner visitors see something, the faster the page feels.

How to fix it:

  • Load critical CSS first, defer the rest
  • Optimize large images and prioritize important content
  • Reduce render-blocking resources

Recommended tool: Google PageSpeed Insights

Test load time →
Performance

Reducing server response time (TTFB)

Problem: TTFB (Time To First Byte) is the time it takes the server to deliver the first byte of the page.

Why it matters: A slow server delays everything else – even the best frontend optimization is wasted then.

How to fix it:

  • Enable page caching (e.g. LiteSpeed Cache or WP Rocket)
  • Use a fast host or a good PHP version
  • Put a CDN in front to shorten the distance

In detail

TTFB is made up of several wait times: DNS resolutionconnection setup → the time the server needs to generate the page. The last part is usually the biggest lever.

Step by step:

  1. Set up a page cache: it stores the finished page instead of rebuilding it from the database on every visit. In WordPress, LiteSpeed Cache (free) or WP Rocket handle this.
  2. Choose a fast host with an up-to-date PHP version – this noticeably shortens generation time.
  3. Put a CDN in front (e.g. Cloudflare): it delivers content from a server near the visitor, shortening the distance.

Rule of thumb: TTFB under ~200 ms is good, from ~600 ms onward you should take action. You can measure it with PageSpeed Insights.

Performance

Removing unused CSS

Problem: Many themes and plugins load CSS that isn't needed on the page at all.

Why it matters: Unnecessary CSS makes the page bigger and delays rendering.

How to fix it:

  • Use an optimization plugin (e.g. Perfmatters, Asset CleanUp) to disable unused styles per page
  • Load critical CSS inline, defer the rest
  • Deactivate unused plugins

Recommended tool: Google PageSpeed Insights

Test load time →
Performance

Removing unused JavaScript

Problem: Scripts are often loaded globally, even though they're only needed on individual pages.

Why it matters: Unused JS increases load time and blocking time.

How to fix it:

  • Only load scripts where they're needed (asset management plugin)
  • Load JavaScript with defer/async
  • Remove unneeded plugins/widgets

Recommended tool: Google PageSpeed Insights

Test load time →
Performance

Reducing page size

Problem: The total size of all files a page loads – ideally up to about 2 MB. Images are usually the largest share.

Why it matters: Large pages load slowly, especially on mobile networks.

How to fix it:

  • Deliver images as WebP and in the right size
  • Remove unnecessary scripts and fonts
  • Don't autoplay videos, load them on click instead

Recommended tool: Elementor Image Size Converter

Go to WebP Converter →
Performance

Reducing server requests

Problem: Every file (image, script, font) is a separate server request – ideally under ~30. Extensive pages quickly add up to many times that.

Why it matters: Many requests noticeably slow down page rendering.

How to fix it:

  • Combine CSS/JS files (optimization plugin)
  • Use icon fonts/sprites instead of many individual images
  • Remove unnecessary plugins and external embeds
Security

How do I set up HTTPS/SSL correctly?

Problem: Without a valid SSL certificate, the connection is unencrypted and browsers warn with “Not Secure.”

Why it matters: HTTPS protects data, is a ranking factor, and a trust signal.

How to fix it:

  • Activate an SSL certificate with your host (usually Let’s Encrypt, free)
  • Switch the website fully to https
  • Move all internal links and resources to https
  • Finally, test the certificate

In detail

SSL/TLS encrypts the connection between browser and server – recognizable by the padlock icon and https://.

  1. Activate a certificate with your host (usually Let’s Encrypt, free and renewed automatically).
  2. Switch the entire site to https:// and update old http:// links/images along with it (otherwise you’ll get “mixed content”).
  3. Check it with the SSL Labs Test (goal: grade A).

Recommended tool: SSL Labs Test

Test SSL →
Security

What are security headers and why do I need them?

Problem: Missing HTTP security headers allow attacks like clickjacking.

Why it matters: Headers like HSTS, X-Content-Type-Options, and CSP harden the site against common attacks.

How to fix it:

  • Have your current headers tested
  • Add HSTS, X-Frame-Options, and X-Content-Type-Options via plugin or server
  • Retest until the rating is right

In detail

Security headers are small instructions your server sends with every page. They tell the browser how to behave to protect visitors. The most important ones:

  • HSTS – forces the site to always load over HTTPS.
  • Content-Security-Policy – allows only trusted sources for scripts, images & styles.
  • X-Content-Type-Options: nosniff – prevents file types from being misinterpreted.
  • X-Frame-Options – protects against clickjacking (embedding in other sites).
  • Referrer-Policy & Permissions-Policy – control origin data and browser features (camera, location …).

They’re set server-side – via server configuration, .htaccess, or a security plugin like Wordfence. Then double-check with SecurityHeaders.com (goal: grade A).

Recommended tool: SecurityHeaders.com

Check headers →
Security

Why updates and backups matter

Problem: Outdated WordPress, theme, or plugin versions are the most common entry point for attacks.

Why it matters: Known vulnerabilities are actively exploited – a backup saves you in an emergency.

How to fix it:

  • Update WordPress, your theme, and plugins regularly
  • Set up automatic backups (e.g. with UpdraftPlus)
  • Delete unused plugins and themes
Security

How do I secure the WordPress login?

Problem: The default login at /wp-admin is attacked by bots on a massive scale.

Why it matters: Weak passwords without additional protection quickly lead to account takeover.

How to fix it:

  • Use strong, unique passwords
  • Enable two-factor authentication (2FA)
  • Limit login attempts (e.g. with Limit Login Attempts)
Security

Adding the HSTS header

Problem: HSTS (Strict-Transport-Security) forces browsers to always load your site over HTTPS.

Why it matters: Without HSTS, attacks are possible that redirect visitors to an unencrypted version.

How to fix it:

  • Set the header server-side: Strict-Transport-Security: max-age=31536000; includeSubDomains
  • First make sure the entire site reliably runs over HTTPS
  • Test the result

Recommended tool: SecurityHeaders.com

Check headers →
Security

Adding the Content-Security-Policy (CSP) header

Problem: The CSP defines which sources scripts, images, and styles may be loaded from.

Why it matters: A CSP is the strongest protection against injected third-party code (cross-site scripting).

How to fix it:

  • Start in report-only mode first so nothing gets blocked
  • Define allowed sources (your own domain, necessary services)
  • Switch it live after testing

Recommended tool: SecurityHeaders.com

Check headers →
Security

Adding the X-Content-Type-Options header

Problem: This header (value nosniff) prevents browsers from misinterpreting file types.

Why it matters: Without it, manipulated files can be misread as executable code.

How to fix it:

  • Set the header server-side: X-Content-Type-Options: nosniff
  • Via .htaccess, server configuration, or security plugin
  • Test the result

Recommended tool: SecurityHeaders.com

Check headers →
Security

Adding the X-Frame-Options header

Problem: This header controls whether your site can be embedded in a frame (iframe) on other sites.

Why it matters: It protects against clickjacking, where your site is invisibly layered over another one.

How to fix it:

  • Set the header server-side: X-Frame-Options: SAMEORIGIN
  • Via .htaccess or security plugin
  • Test the result

Recommended tool: SecurityHeaders.com

Check headers →
Security

Adding the Referrer-Policy header

Problem: The Referrer-Policy controls how much origin information is passed along when visitors click external links.

Why it matters: A strict policy protects your visitors’ privacy.

How to fix it:

  • Set the header: Referrer-Policy: strict-origin-when-cross-origin
  • Via server configuration or security plugin
  • Test the result

Recommended tool: SecurityHeaders.com

Check headers →
Security

Adding the Permissions-Policy header

Problem: The Permissions-Policy defines which browser features (camera, microphone, location) your site is allowed to use.

Why it matters: It prevents embedded third-party content from secretly accessing such features.

How to fix it:

  • Disable features you don’t need, e.g. Permissions-Policy: geolocation=(), camera=(), microphone=()
  • Set it via server configuration or security plugin
  • Test the result

Recommended tool: SecurityHeaders.com

Check headers →
Security

Removing revealing server headers

Problem: Servers often reveal software and version info in their response headers (e.g. Server, X-Powered-By).

Why it matters: This information makes it easier for attackers to target known vulnerabilities.

How to fix it:

  • Hide headers like X-Powered-By and the server version (server configuration/security plugin)
  • Turn off the PHP setting expose_php
  • Check the result

Recommended tool: SecurityHeaders.com

Check headers →
Security

Keeping the SSL certificate up to date

Problem: The SSL certificate makes HTTPS possible and has an expiration date.

Why it matters: If it expires, browsers show a strong warning and visitors leave.

How to fix it:

  • Enable automatic renewal (the default with Let’s Encrypt)
  • Set up expiration monitoring/reminders
  • Occasionally test its validity

Recommended tool: SSL Labs Test

Test SSL →
Security

Certificate authority (issuer)

Problem: The issuer is the authority that issues an SSL certificate – often Let’s Encrypt (free and widely used).

Why it matters: A trusted issuer ensures browsers accept the connection without a warning.

How to fix it:

  • Let’s Encrypt is completely sufficient for most websites
  • Only use a paid certificate for special requirements
  • Make sure automatic renewal is on
Security

Providing security.txt (optional)

Problem: A file at /.well-known/security.txt names a contact for security reports.

Why it matters: It makes it easier for security researchers to reach you responsibly when they find a problem.

How to fix it:

  • Create a security.txt file with one line: Contact: mailto:security@your-domain.com
  • Place it at /.well-known/security.txt
  • Optionally add an expiration date (Expires)

In detail

The security.txt is a standardized text file (RFC 9116) at /.well-known/security.txt. It names a contact that security researchers can report discovered vulnerabilities to – responsibly and without detours.

Example:

Contact: mailto:security@your-domain.com
Expires: 2027-12-31T23:59:59Z
Preferred-Languages: de, en
  • Contact – required: email or form for security reports.
  • Expires – expiration date; after that the file is considered outdated.
  • Optional: Encryption (PGP key), Policy (link to policy).

The file is optional, but a sign of professionalism – especially for shops and services handling user data.

Security

Closing open directory listing

Problem: If directory listing is enabled, the server displays the entire file contents of folders without an index file.

Why it matters: An open listing exposes internal files and structure.

How to fix it:

  • Disable listing in the server configuration (Options -Indexes)
  • Place an empty index.html in sensitive folders
  • Spot-check folder URLs to confirm
SEO

How do I optimize the title and meta description?

Problem: Missing or generic titles and descriptions cost clicks in the search results.

Why it matters: They're your ad copy in Google – they decide whether someone clicks.

How to fix it:

  • Write a unique title (under 60 characters) with your main keyword for each page
  • Write a description (under 155 characters) that invites the click
  • Use an SEO plugin (Yoast or Rank Math) and check the snippet preview

In detail

The title and meta description are what appears in Google as the search result – basically your free ad.

Example:

  • Title (up to ~60 characters): Custom Wood Stair Treads for Your Staircase | Holzstufen24
  • Description (up to ~155 characters): Configure perfectly fitted wood stair treads online – high-quality materials, fast delivery. Calculate your custom size now.

Every page gets its own title with the most important keyword up front. An SEO plugin like Yoast or Rank Math shows you a live preview of the snippet.

SEO

How do I structure headings (H1-H3)?

Problem: Multiple or missing H1 headings confuse search engines.

Why it matters: A clear hierarchy helps ranking and readability.

How to fix it:

  • Use exactly one H1 per page
  • Structure subtopics as H2, details as H3
  • Work keywords naturally into the headings

In detail

Headings aren't just large text – they give your page a structure, like a book's table of contents. Search engines and screen readers use them to understand how your content relates.

  • H1 – the page's main heading. Only one per page; it names the main topic. Example: “Custom Wood Stair Treads”
  • H2 – the major sections underneath. Example: “Materials”, “Pricing”, “Installation”
  • H3 – subpoints within an H2 section. Under “Materials” e.g. “Oak”, “Beech”
  • H4–H6 – even finer sub-levels, rarely needed.

Example structure:

H1  Custom Wood Stair Treads
  H2  Materials
    H3  Oak
    H3  Beech
  H2  Pricing
  H2  Installation

What matters is the order without skipping levels: an H2 is followed by an H3, not directly by an H4. Common mistake: choosing a heading just to make the text look bigger – use regular formatting for that instead, and keep the structure logical.

SEO

What is Google Search Console for?

Problem: Without Search Console, you can't see how Google actually sees your site.

Why it matters: It shows indexing, errors, and the search terms people find you through.

How to fix it:

  • Create a property and verify the website
  • Submit an XML sitemap
  • Fix indexing and coverage errors

Recommended tool: Google Search Console

Go to Search Console →
SEO

What is structured data (Schema.org)?

Problem: Without structured data, Google understands the context of your content less well.

Why it matters: It enables rich results like star ratings, FAQs, or business hours.

How to fix it:

  • Choose the right schema type (LocalBusiness, FAQ, Product)
  • Add it via a plugin or as JSON-LD
  • Check it with the Rich Results Test

Recommended tool: Google Rich Results Test

Test schema →
SEO

Setting the canonical tag correctly

Problem: The canonical tag points search engines to the standard address of a page.

Why it matters: It prevents duplicate content when a page is reachable under multiple URLs.

How to fix it:

  • Set exactly one canonical per page pointing to the preferred URL (an SEO plugin does this automatically)
  • Watch for self-referencing (the page points to itself)
  • Don't add conflicting canonicals
SEO

Setting the mobile viewport

Problem: The viewport meta tag makes sure the page scales correctly on smartphones.

Why it matters: Without it, the desktop view gets squeezed down tiny on the phone.

How to fix it:

  • Make sure this is in the <head>: <meta name="viewport" content="width=device-width, initial-scale=1">
  • This is standard in modern themes
  • Then check the mobile display
SEO

Ensuring indexability

Problem: Shows whether Google is allowed to add the page to its index.

Why it matters: If a noindex is set by mistake, the page won't show up in Google at all.

How to fix it:

  • Check that no “noindex” (meta robots or header) is set
  • Don't block important pages in robots.txt
  • Check the status in Google Search Console
SEO

Improving readability (Flesch score)

Problem: The Flesch score (0–100) rates how easy a text is to read. A score of about 50 or higher counts as good readability.

Why it matters: Easy-to-read text gets read longer and understood better – by search engines too.

How to fix it:

  • Use shorter sentences and simple words
  • Explain technical terms, and use paragraphs and subheadings
  • Write in active voice instead of passive
SEO

Content length

Problem: Too little text gives Google and AI little substance; too much text without structure overwhelms readers instead.

Why it matters: Sufficiently substantial, well-structured content helps both ranking and understanding.

How to fix it:

  • Provide enough substantial text on each important page (rule of thumb: several hundred words)
  • Structure it with subheadings, lists, and paragraphs
  • Write real value, not filler text
Privacy

Why should I host Google Fonts locally?

Problem: Externally loaded Google Fonts transmit visitors' IP addresses to the US.

Why it matters: This is considered problematic under data protection law and has already led to cease-and-desist warnings.

How to fix it:

  • Host fonts locally (plugin OMGF or directly in the theme)
  • Remove external font calls
  • Check the browser's network tab to confirm nothing is loaded from Google anymore
Privacy

Embedding external services / trackers cleanly

Problem: Services like Google Analytics/GA4, Maps, or Fonts transmit visitor data to third parties.

Why it matters: Such services generally require consent and an entry in the privacy policy.

How to fix it:

  • Load every external service only after consent (consent tool)
  • Name all services in the privacy policy
  • Use data-minimizing variants where possible (e.g. IP anonymization)
Privacy

Checking the server location

Problem: The location of the server hosting the website – ideally within the EU/EEA.

Why it matters: Servers outside the EU mean additional legal requirements for data transfer.

How to fix it:

  • Choose hosting with a server location in the EU/EEA whenever possible
  • Also check the location of embedded services (CDN, fonts)
  • When in doubt, ask your host
Image

Why is no preview image shown when sharing (Open Graph)?

Problem: When sharing on social networks, the image is missing or the wrong one is shown.

Why it matters: An appealing preview significantly increases the click-through rate on shared links.

How to fix it:

  • Set the Open Graph title, description, and image (1200×630 px) for each page (SEO plugin)
  • Check with the Facebook Sharing Debugger
  • Have it re-scrape the preview cache there

In detail

Open Graph tags determine how a shared link looks on WhatsApp, Facebook & LinkedIn – title, description, and preview image.

Example:

<meta property="og:title" content="Custom Wood Stair Treads">
<meta property="og:description" content="Configure it online for a perfect fit.">
<meta property="og:image" content="https://…/preview.jpg">

The preview image should be 1200×630 px in size. After making changes in the Facebook Sharing Debugger, re-scrape the cache, or the networks will show the old preview.

Recommended tool: Facebook Sharing Debugger

Test preview →
Image

How do I maintain my Google Business Profile?

Problem: An incomplete profile results in less local visibility.

Why it matters: The profile appears in Google Maps and local search – often the first impression.

How to fix it:

  • Claim and verify your profile
  • Keep hours, photos, and services up to date
  • Link your website and respond to reviews

Recommended tool: Google Business Profile

Manage profile →
Image

Why consistent branding matters

Problem: Logo, colors, and visual style differ from channel to channel.

Why it matters: Consistent recognition across all channels builds professionalism and trust.

How to fix it:

  • Define your logo, color palette, and tone of voice as a fixed standard
  • Apply them consistently on your website and all profiles
  • Unify your profile and cover images
Image

Linking social media profiles

Problem: Links to your active profiles (Instagram, Facebook, LinkedIn).

Why it matters: Linked channels strengthen trust, reach, and the association with your brand.

How to fix it:

  • Only link channels you actively maintain in the footer/header
  • Add clear icons to the links
  • Open in a new tab (target="_blank")
Image

Setting up a favicon

Problem: The small icon in the browser tab and in bookmarks.

Why it matters: A favicon makes your site instantly recognizable in tabs and bookmarks.

How to fix it:

  • Upload a square logo (min. 512×512 px) as the favicon
  • In WordPress, set it under Appearance → Customizer → Site Identity
  • Check it in different browsers
Image

Setting up the Twitter/X card

Problem: Meta tags that create an appealing preview when sharing on X/Twitter.

Why it matters: A good card increases clicks on shared links.

How to fix it:

  • Set twitter:card, twitter:title, twitter:description, and twitter:image (SEO plugin)
  • Use summary_large_image as the card type
  • Test the preview

Recommended tool: Facebook Sharing Debugger

Test preview →
Image

Adding an Apple touch icon

Problem: The icon that appears when visitors add your site to the home screen on iPhone/iPad.

Why it matters: Without a custom icon, Apple just shows an unattractive screenshot.

How to fix it:

  • Link a 180×180-px PNG as the apple-touch-icon in the <head>
  • In WordPress, the site icon usually takes care of this
  • Test it on an iOS device
Image

Marking up Organization schema

Problem: Structured data about your business (name, logo, contact, profiles).

Why it matters: It helps Google understand your business as an entity (Knowledge Panel, logo in search results).

How to fix it:

  • Add Organization or LocalBusiness schema as JSON-LD
  • Include name, logo, URL, contact info, and sameAs (profiles)
  • Check it with the Rich Results Test

Recommended tool: Google Rich Results Test

Test schema →
Image

Marking up reviews as schema

Problem: Customer reviews as structured data (AggregateRating/Review).

Why it matters: Correctly marked-up reviews can show star ratings in Google results and increase the click-through rate.

How to fix it:

  • Add real reviews as Review/AggregateRating schema
  • Only mark up reviews that actually exist and are verifiable (follow the guidelines)
  • Check it with the Rich Results Test

Recommended tool: Google Rich Results Test

Test schema →
Usability

How do I optimize my site for mobile?

Problem: Over half of visitors come from mobile, but the site is built for desktop.

Why it matters: A site that isn't mobile-friendly directly costs you inquiries.

How to fix it:

  • Check the responsive layout on all devices
  • Font size at least 16 px, buttons large enough to tap
  • Go through the mobile view in Elementor section by section
Usability

How do I set clear calls to action?

Problem: Visitors don't know what to do next.

Why it matters: Clear calls to action increase the number of inquiries.

How to fix it:

  • Define one main goal per page
  • Place a prominent button near the top and at the bottom of the page
  • Label it clearly, e.g. “Inquire Now”
Usability

How do I make contact options easy to reach?

Problem: Phone number and email aren't clickable or are well hidden.

Why it matters: Every extra hurdle costs you contact requests.

How to fix it:

  • Add the phone number as a tel: link and the email as a mailto: link
  • Offer a way to get in touch in the header and footer
  • Provide a short, simple contact form
Usability

Enlarging tap targets for mobile

Problem: Buttons and links should be large enough and spaced out on smartphones.

Why it matters: Tap targets that are too small or too close together lead to mis-taps and frustration – and cost you inquiries.

How to fix it:

  • Make tap targets at least 48×48 px
  • Leave enough space between links/buttons
  • Actually click through the mobile view for real
Usability

Structuring the main navigation clearly

Problem: The main navigation leads to the most important areas.

Why it matters: Clear, uncluttered navigation is essential for orientation.

How to fix it:

  • Limit navigation items to the essentials (rule of thumb: max. ~7)
  • Use understandable labels instead of internal jargon
  • Make sure the navigation is easy to use on smartphones
Usability

Using breadcrumbs

Problem: Breadcrumbs show the path to the current page (Home › Category › Page).

Why it matters: They improve orientation and navigation and can appear as a path in Google.

How to fix it:

  • Output breadcrumbs via an SEO plugin (Yoast/Rank Math)
  • Mark them up with BreadcrumbList schema
  • Display them consistently across all subpages
Accessibility

How do I ensure sufficient color contrast?

Problem: Light text on a light background is hard to read for many people.

Why it matters: The BFSG (in effect since June 28, 2025) requires good readability – at least 4.5:1 for normal text.

How to fix it:

  • Check the foreground and background color with a contrast checker
  • Adjust to at least 4.5:1
  • Also check buttons, links, and placeholder text

In detail

Contrast is the ratio between text and background brightness. The higher it is, the more readable – especially in sunlight or for people with low vision.

  • Normal text: at least 4.5:1
  • Large text (from ~24 px, or ~19 px bold): at least 3:1

Example: Light gray text #AAAAAA on white gives only ~2.3:1 – not enough. Dark gray #595959 on white reaches 7:1 – very good.

Check the foreground and background color with the WebAIM Contrast Checker and adjust the weakest spot. Also think about buttons, links, and placeholder text.

Recommended tool: WebAIM Contrast Checker

Test contrast →
Accessibility

Why do images need alt text?

Problem: Images without alt text are invisible to screen readers.

Why it matters: Alt text is required for accessibility and also helps SEO.

How to fix it:

  • Give every content image a short, descriptive alt text
  • Mark purely decorative images with empty alt text (alt="")
  • Manage alt text directly in the WordPress media library

In detail

Alt text describes an image in words – for screen readers and in case an image fails to load.

Good vs. bad:

  • alt="IMG_2043" or an empty alt on an important image
  • alt="Oak stair tread with an oiled surface"

Rules: describe the content (don't start with “image of …”); purely decorative images get an empty alt (alt="") so screen readers skip them. Manage alt text in the WordPress media library.

Accessibility

How do I make my site keyboard-operable?

Problem: The site can't be fully operated without a mouse.

Why it matters: Many people navigate using only a keyboard – the BFSG requires it.

How to fix it:

  • Navigate through the entire site using the Tab key
  • Make sure there's a visible focus outline
  • Make all functions (menus, forms) reachable by keyboard
Accessibility

Understanding the overall accessibility score

Problem: The score (0–100) summarizes accessibility criteria that can be checked automatically.

Why it matters: It's a good starting point – but it only covers the part that can be checked by machine; some criteria need a manual review.

How to fix it:

  • First fix the specific issues flagged (contrast, link text, headings)
  • Also test manually with a keyboard and a screen reader
  • Measure again after making changes
Accessibility

Fixing heading order

Problem: Headings should follow a logical order (H1 → H2 → H3) without skipping levels.

Why it matters: A clean hierarchy helps screen readers and search engines understand the page structure.

How to fix it:

  • Use exactly one H1 per page
  • Don't skip levels (no H2 followed directly by H4)
  • Don't use headings just to make text look bigger
Accessibility

Setting the language attribute

Problem: The lang attribute in the <html> tag specifies the page language.

Why it matters: Screen readers use it to choose the right pronunciation; it also matters for translation.

How to fix it:

  • Set lang="en" in the <html> tag (WordPress usually does this automatically)
  • Add a local lang attribute for foreign-language sections
  • Check that the value matches the actual language
Accessibility

Not disabling zoom

Problem: Some sites block pinch-to-zoom via a viewport setting.

Why it matters: Many people rely on zooming in – blocking zoom is a serious barrier.

How to fix it:

  • Don't use user-scalable=no or maximum-scale=1 in the viewport tag
  • Make sure the site stays usable up to 200 %
  • Test zooming on a smartphone
Accessibility

Labelling buttons clearly

Problem: Every button or control needs a recognizable label.

Why it matters: Icon buttons without text are otherwise empty and unusable for screen readers.

How to fix it:

  • Label icon buttons with aria-label or hidden text
  • Use meaningful text instead of just symbols
  • Double-check with a screen reader
Accessibility

Providing an accessibility statement

Problem: A page that states the current accessibility status and provides a contact for reporting barriers.

Why it matters: Mandatory for public bodies (BITV 2.0); since June 2025 the BFSG also requires it from many businesses with an online offering.

How to fix it:

  • Create an “Accessibility” page with the current status and a contact
  • State known limitations openly
  • Link it in the footer; get legal advice if in doubt
Accessibility

Offering easy language

Problem: Key content also available in easy language.

Why it matters: Mandatory for public bodies – and a clarity boost for all visitors.

How to fix it:

  • Summarize the most important information (offering, contact) in easy language
  • Short sentences, clear terms, no complex nested clauses
  • Link it somewhere easy to find
Accessibility

Providing sign language

Problem: Core content available as a video in German Sign Language (DGS).

Why it matters: Mandatory for public bodies; an important access point for deaf visitors.

How to fix it:

  • Provide key information as a DGS video
  • Add captions to the videos as well
  • Link it prominently on the homepage/accessibility page
Accessibility

Setting form labels correctly

Problem: Input fields without an associated label are unclear to screen readers.

Why it matters: Labels tell you what a field is for – required for accessibility and easier to use for everyone.

How to fix it:

  • Give every field a <label for> (or an aria-label)
  • A placeholder is not a substitute for a label
  • Double-check with a keyboard and a screen reader
AI visibility

How do I make my content machine-readable for AI?

Problem: AI systems have a much harder time understanding unstructured pages.

Why it matters: Schema.org makes content machine-readable and therefore easier to cite.

How to fix it:

  • Add FAQ, LocalBusiness, or Article markup as JSON-LD
  • Clearly mark up key facts (name, location, services)
  • Double-check with the Rich Results Test

In detail

Structured data is invisible extra information in the source code (in JSON-LD format) that clearly tells a machine: “This is a business with an address, opening hours, and a rating.” People don't see any of this – but Google and AI systems do.

Mini example (LocalBusiness):

{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "name": "Sample Company",
  "telephone": "+49 …",
  "address": {
    "@type": "PostalAddress",
    "addressLocality": "Ampfing"
  }
}

You add blocks like this via an SEO plugin (e.g. Rank Math) or directly as a script, and check them with the Rich Results Test.

Recommended tool: Google Rich Results Test

Test schema →
AI visibility

Why AI prefers clear question-and-answer content

Problem: Pure marketing prose without clear statements is rarely cited by AI.

Why it matters: AI systems prefer to draw on precise, directly answered questions.

How to fix it:

  • Phrase real user questions as headings
  • Answer briefly and factually right below them
  • Use lists and tables for clear structure
AI visibility

What is an llms.txt and do I need it?

Problem: Without signposts, AI crawlers can't reliably find your most important content.

Why it matters: An llms.txt file in the root directory points AI directly to your key pages.

How to fix it:

  • Create a file named llms.txt
  • Add a title, short description, and links to your key pages
  • Place it at yourdomain.com/llms.txt

In detail

The llms.txt file is a new, voluntary standard: a Markdown file at yourdomain.com/llms.txt that gives AI systems a curated overview of your most important content – similar to a sitemap, but for AI.

Example:

# Sample Company

> Custom-made wooden stairs from Bavaria.

## Important pages
- [Products](https://yourdomain.com/products/): All stairs & materials
- [Contact](https://yourdomain.com/contact/): Inquiries & consultation
  • A title (# heading) and a short summary (> quote).
  • A list of key pages, each with a brief description.

Note: llms.txt isn't read by every AI system yet – but it doesn't hurt, and it positions you early. It does not replace controlling crawler access via robots.txt.

Recommended tool: llmstxt.org

View the standard →
AI visibility

Why semantic HTML helps AI visibility

Problem: If everything is wrapped only in <div> tags, your content lacks recognizable structure.

Why it matters: Semantic tags help search engines and AI classify content correctly.

How to fix it:

  • Use <header>, <main>, <article>, <nav>, and <footer>
  • Use exactly one H1 per page
  • Maintain a clean, logical heading hierarchy
AI visibility

Controlling AI crawler access (e.g. GPTBot)

Problem: The robots.txt file determines whether AI crawlers like GPTBot can read your content.

Why it matters: If you allow access, AI systems can learn about your content and recommend it – increasing your visibility.

How to fix it:

  • Decide in robots.txt which AI bots you allow
  • Allow the important bots for greater visibility
  • Deliberately exclude sensitive areas
AI visibility

Marking up FAQ schema

Problem: Frequently asked questions marked up as FAQPage schema (JSON-LD).

Why it matters: AI systems and Google especially like to cite clearly marked-up questions and answers.

How to fix it:

  • Add real questions and answers as FAQPage schema
  • Only mark up content that's actually visible on the page
  • Check with the Rich Results Test

In detail

FAQ schema marks up question-and-answer pairs in a machine-readable way. Google can show them as expandable questions right in the search result, and AI systems especially like to cite them.

Mini example:

{
  "@type": "FAQPage",
  "mainEntity": [{
    "@type": "Question",
    "name": "How long does shipping take?",
    "acceptedAnswer": {
      "@type": "Answer",
      "text": "Usually 5–7 business days."
    }
  }]
}

Important: Only mark up questions that are also visible on the page. Check with the Rich Results Test.

Recommended tool: Google Rich Results Test

Test schema →
AI visibility

Making author and freshness visible

Problem: Visible author and date/update information.

Why it matters: Author and date information strengthen search engines' and AI's trust in your content (E-E-A-T).

How to fix it:

  • Show the author's name and date on posts
  • Maintain and display the last-updated date
  • Optionally add Author/Article schema
Technology

How do I find and fix console errors?

Problem: JavaScript errors in the background silently break individual functions.

Why it matters: These errors cost you functionality and look unprofessional to tech-savvy visitors.

How to fix it:

  • Open the browser console (F12 → Console)
  • Note the red error messages
  • Check and fix the scripts or plugins causing them
Technology

What is mixed content and how do I avoid it?

Problem: Some resources still load over http instead of https.

Why it matters: Browsers block them or flag the page as “not secure”.

How to fix it:

  • Search the console or network tab for mixed-content warnings
  • Switch the affected URLs to https
  • Clean up the database with search-and-replace if needed
Technology

How do I set up redirects correctly (301)?

Problem: Deleted or renamed pages lead to 404 errors.

Why it matters: Dead pages cost you ranking and lose visitors.

How to fix it:

  • Redirect old URLs to the matching new page using a 301
  • Avoid redirect chains
  • Manage redirects with a plugin like Redirection
Technology

What is robots.txt and how do I set it up?

Problem: The robots.txt file (at yourdomain.com/robots.txt) tells search engine crawlers which areas they may look at and which they may not.

Why it matters: An incorrect entry can accidentally lock the entire website out of Google – a correct one keeps unimportant areas out of the index.

How to fix it:

  • Open yourdomain.com/robots.txt and check it
  • Make sure no important pages are blocked by Disallow
  • Link the XML sitemap in the robots.txt file
  • Double-check changes with the Google Search Console

In detail

The robots.txt file is a simple text file in the root directory. It consists of rules per crawler (User-agent) with Allow/Disallow.

Example:

User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php

Sitemap: https://yourdomain.com/sitemap.xml
  • User-agent: * – this rule applies to all crawlers.
  • Disallow: /path/ – this area should not be crawled.
  • Sitemap: – reference to the XML sitemap.

Caution: Disallow: / blocks the entire site – a common, high-impact mistake. Also: robots.txt is not access protection – sensitive content belongs behind a password, not just in a Disallow entry.

Recommended tool: Google Search Console

Go to Search Console →
Technology

What is the XML sitemap for?

Problem: The XML sitemap lists all the important URLs on your website and helps search engines avoid missing a page.

Why it matters: Especially with many pages or fresh content, it helps Google index your site quickly and completely.

How to fix it:

  • Have an SEO plugin (Yoast/Rank Math) generate an XML sitemap automatically
  • Submit the sitemap in the Google Search Console
  • Reference the sitemap in the robots.txt file

In detail

An XML sitemap is a machine-readable list of your URLs – usually at yourdomain.com/sitemap.xml.

Mini example:

<url>
  <loc>https://yourdomain.com/products/</loc>
  <lastmod>2026-08-01</lastmod>
</url>

SEO plugins like Yoast or Rank Math generate and update it automatically. Submit the sitemap in the Google Search Console and monitor indexing there.

Recommended tool: Google Search Console

Go to Search Console →
Technology

Setting up SPF for email

Problem: The SPF record (DNS) determines which servers may send email on your behalf.

Why it matters: Without SPF, your emails are more likely to land in spam, and your sender address can be spoofed more easily.

How to fix it:

  • Create a TXT record with your sending servers (e.g. v=spf1 include:... -all)
  • Only include senders you actually use
  • Check it with a DNS/email tool

Recommended tool: MXToolbox

Check DNS/email →
Technology

Setting up DMARC for email

Problem: DMARC (DNS) determines how spoofed emails are handled and provides reports.

Why it matters: DMARC protects your domain from abuse and improves deliverability.

How to fix it:

  • Create a TXT record _dmarc with a policy (e.g. v=DMARC1; p=quarantine; rua=...)
  • Start with p=none and review the reports
  • Later tighten to quarantine/reject

Recommended tool: MXToolbox

Check DNS/email →
Technology

Setting up DKIM for email

Problem: DKIM cryptographically signs outgoing emails.

Why it matters: The signature confirms that the email is genuine and unaltered – important to avoid being flagged as spam.

How to fix it:

  • Enable DKIM with your email provider and add the provided key as a DNS TXT record
  • Use the correct selector
  • Test deliverability

Recommended tool: Mail-Tester

Test email deliverability →
Technology

CMS (info)

Problem: The content management system in use – the software that runs the website (e.g. WordPress, TYPO3 or Shopify).

Why it matters: The CMS determines how you manage content and which security/update routines are needed.

How to fix it:

  • Keep WordPress, your theme, and plugins up to date
  • Only use needed plugins from trustworthy sources
  • Set up regular backups
Technology

Hiding the CMS version in the source

Problem: Many systems write their version number visibly into the source code.

Why it matters: The version number makes it easier for attackers to target known vulnerabilities.

How to fix it:

  • Remove the WordPress generator meta tag (security plugin or theme function)
  • Remove version hints from script/style URLs
  • Most importantly: always keep everything up to date
Technology

Not exposing the PHP version

Problem: Servers sometimes reveal the PHP version in the response header (X-Powered-By).

Why it matters: The version helps attackers look for matching vulnerabilities.

How to fix it:

  • Turn off expose_php in the PHP configuration
  • Clean up server headers
  • Use a current, supported PHP version
Technology

Overall best-practices score

Problem: Google Lighthouse score for technical best practices (security, modern standards, console errors).

Why it matters: A high score shows a technically well-built site.

How to fix it:

  • Fix the flagged individual issues (e.g. console errors)
  • Pay attention to HTTPS and current standards
  • Re-measure after making changes

Recommended tool: Google PageSpeed Insights

Test load time →
Technology

Specifying correct image aspect ratios

Problem: Images should be served with the correct width/height so they don't load distorted or cause layout jumps.

Why it matters: Incorrect ratios cause distortion and layout shifts (CLS).

How to fix it:

  • Specify width and height on the image
  • Match the file's aspect ratio to how it's displayed
  • Check the display after making changes
Technology

Setting the doctype (info)

Problem: The <!DOCTYPE html> line at the top of the page turns on the browser's standards mode.

Why it matters: Without a doctype, browsers render in the outdated “quirks mode” with unpredictable results.

How to fix it:

  • Make sure every page starts with <!DOCTYPE html>
  • This is standard in modern themes
  • Double-check custom templates
Technology

Declaring the character encoding

Problem: The <meta charset="utf-8"> tag sets the character encoding.

Why it matters: Without UTF-8, accented characters and special characters display incorrectly.

How to fix it:

  • Set <meta charset="utf-8"> in the <head> (default in WordPress)
  • Consistently save content in UTF-8
  • Check special characters on the frontend
Technology

Avoiding deprecated browser APIs

Problem: Use of techniques that browsers have deprecated.

Why it matters: Deprecated APIs can be removed at any time and break functionality.

How to fix it:

  • Pay attention to console warnings about “deprecated” features
  • Keep themes/plugins up to date
  • Replace old scripts with modern alternatives
Technology

No geolocation request on load

Problem: Some sites ask for visitors' location right when the page loads.

Why it matters: An unprompted location request feels intrusive and puts visitors off.

How to fix it:

  • Only request location after a deliberate user action
  • Briefly explain beforehand why it's needed
  • Offer a sensible alternative if permission is denied
Technology

No notification request on load

Problem: Some sites ask for permission to send push notifications right when the page loads.

Why it matters: Immediate notification pop-ups are annoying and almost always lead to “Block”.

How to fix it:

  • Only ask for notification permission after a clear user action
  • Briefly explain the benefit beforehand
  • Avoid intrusive auto pop-ups
Technology

Checking iframe embeds

Problem: Third-party content embedded via iframe (maps, videos, forms).

Why it matters: iframes can affect load time, privacy, and security.

How to fix it:

  • Only embed trustworthy sources
  • Secure them with loading="lazy" and sensible sandbox attributes
  • Respect privacy (only load after consent)
Technology

What is an MX record and why do I need it?

Problem: Without a correct MX record in DNS, emails to your domain never arrive at all.

Why it matters: The MX record (Mail Exchanger) determines which server accepts emails for your domain. If it's missing or wrong, messages get lost or bounce back to the sender as undeliverable.

How to fix it:

  • Check in your host's DNS management whether an MX record points to the correct mail server
  • If you have multiple servers, set priorities (10, 20, …) sensibly
  • Allow up to 24 hours for DNS propagation after making changes
  • Test with an MX checker to confirm everything resolves cleanly

Recommended tool: MXToolbox

Technology

What is MTA-STS and does it protect my email?

Problem: Email transport isn't encrypted by default – attackers can downgrade connections to unencrypted.

Why it matters: MTA-STS (SMTP MTA Strict Transport Security) tells sending servers that they may only deliver emails encrypted (TLS). This protects against eavesdropping and downgrade attacks.

How to fix it:

  • Create a TXT record _mta-sts in your DNS zone
  • Provide a policy file at https://mta-sts.yourdomain.com/.well-known/mta-sts.txt
  • Start in testing mode first, then switch to enforce
  • Use it together with TLS reporting to spot problems

Recommended tool: MXToolbox

Technology

What does TLS reporting (TLS-RPT) do for email?

Problem: Without feedback, you won't notice when emails to your domain are delivered unencrypted or not delivered at all.

Why it matters: TLS reporting has sending servers regularly send reports about encryption and delivery problems to an address you specify – so you catch issues early.

How to fix it:

  • Create a TXT record _smtp._tls.yourdomain.com with v=TLSRPTv1; rua=mailto:…
  • Set an email address for the reports
  • Review the reports regularly (or have them analyzed automatically)
  • Ideal to use together with MTA-STS

Recommended tool: MXToolbox

Technology

Why multiple nameservers matter

Problem: If you run only one nameserver and it fails, your entire domain – website and email – becomes unreachable.

Why it matters: Nameservers translate your domain into your server's address. At least two, ideally on separate networks, ensure resilience against outages.

How to fix it:

  • Check with your domain/DNS provider that at least two nameservers are configured
  • Where possible, use separate locations/networks
  • Set sensible TTL values so changes take effect quickly
  • Check the configuration with a DNS checker

Recommended tool: MXToolbox DNS

Security

What is DNSSEC and do I need it?

Problem: Without DNSSEC, DNS responses can be forged – visitors land on a fake site without noticing.

Why it matters: DNSSEC cryptographically signs DNS responses so tampering is detected. It protects against DNS spoofing and cache poisoning.

How to fix it:

  • Check with your DNS/domain provider whether DNSSEC is supported
  • Enable DNSSEC (usually one click in the customer portal)
  • The provider adds the matching DS record at the registry
  • Then test with a DNSSEC validator

Recommended tool: Verisign DNSSEC Debugger

Technology

How do I identify my hosting provider - and why it matters

Problem: When problems like outages, slow load time, or security vulnerabilities occur, you often don't know who the right contact is.

Why it matters: Your host determines the speed, availability, server location (important for GDPR), and security level of your website.

How to fix it:

  • Use a WHOIS lookup to find out the provider and server location
  • Look for a location in the EU/Germany (data protection)
  • Make sure the PHP version, backups, and SSL are up to date
  • If performance stays poor, consider upgrading or switching providers

Recommended tool: who.is

Privacy

Why every service must be named in the privacy policy

Problem: Websites often run services like fonts, maps, analytics, or video that don't show up in the privacy policy.

Why it matters: The GDPR requires that every instance of data processing – i.e. every embedded service – be transparently disclosed. If even one is missing, the policy is incomplete.

How to fix it:

  • Identify all embedded services (e.g. via the browser's network tab or a scanner)
  • Add the purpose, provider, and legal basis for each service
  • Use a privacy policy generator that provides the text blocks
  • Update the policy whenever you add a new tool

Recommended tool: eRecht24 Privacy Policy Generator

Security

Should I disable the XML-RPC interface?

Problem: The WordPress XML-RPC interface is rarely needed, but is frequently abused for attacks (brute force, DDoS).

Why it matters: If it’s open and unused, it’s an unnecessary attack surface.

How to fix it:

  • Check whether an app actually needs the interface (usually not)
  • Block XML-RPC via a security plugin or server rule (.htaccess)
  • Then test that no needed functionality breaks
  • Check regularly that it stays disabled

Recommended tool: security plugin (e.g. NinjaFirewall)

Security

Why the admin username should not be public

Problem: WordPress usernames can often be read out via the REST API or author archives.

Why it matters: If an attacker knows the username, only the password is missing to log in – that's half the battle for a brute-force attack.

How to fix it:

  • Don't use a user named “admin”
  • Keep the display name and login name different
  • Restrict the public user list (REST API/author archives)
  • Combine with 2FA and strong passwords

Recommended tool: security plugin

Privacy

What do cookies set on page load mean?

Problem: If cookies are already set on the very first page load, they're often non-essential (tracking/marketing) – and set before any consent.

Why it matters: Only strictly necessary cookies may be set without consent. Everything else requires active consent first.

How to fix it:

  • Check which cookies are set on load (browser dev tools, “Application” tab)
  • Block non-essential cookies via the consent tool until consent is given
  • Cleanly separate strictly necessary cookies from optional ones
  • Regularly check what's actually being set

Recommended tool: Browser DevTools / cookie scanner

Image

Why multiple review portals are worth it

Problem: If you're reviewed on only one portal – or not reviewed at all – you come across as less trustworthy and are harder to find.

Why it matters: Reviews on multiple relevant portals strengthen trust, local visibility, and click-through rate.

How to fix it:

  • Choose the right portals (Google, business directories, industry-specific portals)
  • Fill out profiles completely and consistently
  • Actively ask for reviews and respond to them
  • Add reviews as a rich snippet/schema on your website

Recommended tool: Google Business Profile

Technology

Why a website needs regular maintenance

Problem: Without maintenance, your CMS, plugins, and themes become outdated – security vulnerabilities, errors, and outages pile up.

Why it matters: Regular updates, backups, and checks keep your site secure, fast, and legally up to date.

How to fix it:

  • Install updates promptly – always after a backup
  • Set up automatic backups and test the restore process
  • Regularly check load time, links, and forms
  • Keep legal texts up to date – ideally as part of a fixed maintenance schedule

Recommended tool: Maintenance contract / backup plugin

Technology

PHP version

Problem: WordPress runs on PHP. Outdated PHP versions no longer receive security updates and are no longer supported by newer plugins.

Why it matters: An up-to-date PHP version brings security fixes and noticeably more speed. Old versions are an entry point for attacks and slow down the site.

How to fix it:

  • Check the current version in your hosting panel or under Tools › Site Health
  • Create a full backup before switching
  • Switch to an officially supported version (currently at least PHP 8.1)
  • Then test your website, forms, and shop features
  • If errors occur, update plugins and theme first

Recommended tool: WordPress Site Health / hosting panel

Security

WordPress version

Problem: An outdated WordPress installation contains publicly known security vulnerabilities.

Why it matters: As soon as a vulnerability is published, automated bots specifically search for sites running that exact version. Updates close it.

How to fix it:

  • Check the version under Dashboard › Updates
  • Create a backup before every update
  • Let small security updates install automatically
  • Apply larger updates promptly after a quick test
  • Check the site and key functions after updating

Recommended tool: WordPress Dashboard

Security

Plugin updates

Problem: Outstanding plugin updates are the most common way WordPress sites get hijacked.

Why it matters: Most attacks exploit known vulnerabilities in outdated plugins – not sophisticated hacks. Sites that update promptly fall outside the typical target profile.

How to fix it:

  • Check for updates regularly (Dashboard › Updates)
  • Always back up first, then update
  • Delete unused plugins instead of just deactivating them
  • Avoid plugins that haven't been updated in years
  • Establish a fixed maintenance routine

Recommended tool: WordPress Dashboard / maintenance plan

Security

Unmodified core files

Problem: If a WordPress core file is quietly modified, it doesn't stand out in daily use – the site looks completely normal.

Why it matters: Attackers like to embed malware in existing core files. A checksum comparison against the original from wordpress.org reliably reveals such changes.

How to fix it:

  • Compare core files against the original from wordpress.org (security plugin or host tool)
  • Have suspicious files checked instead of deleting them blindly
  • If core files have been altered, cleanly reinstall WordPress
  • Afterward, renew all passwords and the security keys (salts)

Recommended tool: security plugin with file integrity check

Security

Executable files in the uploads folder

Problem: The uploads folder (/wp-content/uploads/) is meant for images and documents – not executable program files.

Why it matters: If PHP code is found there, it's almost always a backdoor that lets attackers come back at any time – even after an update.

How to fix it:

  • Check the uploads folder for .php files
  • Back up any findings, then remove them
  • Block PHP execution in the uploads folder at the server level (server rule/.htaccess)
  • Then check core files and user accounts
  • Renew all passwords

Recommended tool: security plugin / file manager

Technology

Backups

Problem: Without a working backup, any defect, attack, or misclick can quickly turn into total loss.

Why it matters: A backup that has never been restored isn't really a backup. Only a tested restore counts.

How to fix it:

  • Set up automatic, regular backups (database and files)
  • Store backups outside the web server
  • Keep multiple versions and define a retention period
  • Test the restore process at least once for real
  • Take a backup before every major update

Recommended tool: Backup plugin / host backup

Security

Error display (debug mode)

Problem: If debug mode is active, visitors see technical error messages with paths and system details.

Why it matters: Such messages reveal internal details – server paths, versions, plugin names – giving attackers a foothold. They also look unprofessional.

How to fix it:

  • In wp-config.php, set WP_DEBUG to false
  • Disable the on-site display (WP_DEBUG_DISPLAY set to false)
  • Have errors written to a log file instead
  • Enable debug mode only briefly, ideally on a staging environment

Recommended tool: wp-config.php

Technology

Maintenance mode

Problem: An active maintenance or “Coming soon” mode shows visitors and search engines nothing but a placeholder page.

Why it matters: If it accidentally stays on after launch, the site is effectively invisible – no visitors, no rankings, no inquiries.

How to fix it:

  • Check whether a maintenance or coming-soon plugin is active
  • Deactivate it consistently after launch
  • For a relaunch, set a time limit and don't permanently block search engines
  • After disabling it, check the site in an anonymous/private browser window

Recommended tool: Plugin overview

SEO

Search engine visibility

Problem: Under Settings › Reading there's a checkbox that locks search engines out. It gets checked during setup – and is often forgotten after launch.

Why it matters: If it's checked, the website explicitly asks Google not to index it. Even the best page then gets zero visibility.

How to fix it:

  • Open Settings › Reading
  • Uncheck “Discourage search engines from indexing this site”
  • Also check robots.txt and noindex settings
  • Request re-indexing in Google Search Console

Recommended tool: WordPress Settings / Google Search Console

Accessibility

Marking up page regions (landmarks)

Problem: Without semantic markup, a page is one long wall of text to a screen reader.

Why it matters: Regions like header, navigation, main content, and footer can be jumped to directly – but only if they're marked up (header, nav, main, footer, or ARIA landmarks).

How to fix it:

  • Mark up the page regions with the matching HTML5 elements
  • Use exactly one main region per page
  • Give multiple regions of the same type additional labels (aria-label)
  • Check with a landmark checker

Recommended tool: WAVE / axe DevTools

Accessibility

Visible keyboard focus

Problem: Many designs hide the focus outline because it's considered visually distracting.

Why it matters: Without a mouse, you then can't see where you currently are – the site becomes unusable. A visible focus indicator is required under the BFSG.

How to fix it:

  • Avoid outline: none without a replacement
  • Define a clearly visible focus style with sufficient contrast
  • Cover all interactive elements (links, buttons, form fields)
  • Tab through the entire page once from start to finish

Recommended tool: Browser + Tab key

Accessibility

Table headers

Problem: Tables are often built without real header rows, or just made bold visually.

Why it matters: Without real header cells (th), a screen reader can't assign meaning to the values – the table becomes a column of numbers without context.

How to fix it:

  • Mark up header cells as th
  • Define the association with scope="col" or scope="row"
  • Use tables only for data, not for layout
  • Split up complex tables or describe them with caption

Recommended tool: WAVE

Accessibility

Captions for video/audio

Problem: Videos and audio often run without captions or a transcript.

Why it matters: Without captions, content stays inaccessible to deaf and hard-of-hearing people – and to anyone watching without sound. For relevant content, captions are required under the BFSG.

How to fix it:

  • Create a caption file (e.g. .vtt) and add it
  • Always correct auto-generated captions afterward
  • Also provide a transcript
  • For audio-only content, provide a text version

Recommended tool: Caption editor / transcription service

Accessibility

Autocomplete (autofill)

Problem: Form fields often don't tell the browser what kind of data is expected.

Why it matters: With the autocomplete attribute, browsers can fill in name, address, or email automatically. This especially helps people with motor or cognitive impairments – and reduces drop-offs.

How to fix it:

  • Set the matching autocomplete values on standard fields (name, email, tel, street-address …)
  • Use the correct field type (type="email", type="tel")
  • Check on a smartphone whether the suggestions appear

Recommended tool: Browser DevTools

Accessibility

Respecting reduced motion

Problem: Animations, parallax effects, and auto-playing sliders usually run regardless of users' system settings.

Why it matters: For some people, motion triggers dizziness or nausea. Anyone who has turned on “reduce motion” in their system expects a calmer page.

How to fix it:

  • Check the media query prefers-reduced-motion: reduce
  • Turn off animations there, or shorten them significantly
  • Make auto-starting sliders and videos pausable
  • Don't let anything flash (seizure risk)

Recommended tool: CSS / system settings

Accessibility

Text resizable to 200%

Problem: When text is enlarged in the browser, some layouts break – text overlaps or disappears.

Why it matters: Users need to be able to enlarge content to 200 % without losing information or functionality. This is a core accessibility requirement.

How to fix it:

  • Define font sizes in relative units (rem/em) instead of fixed pixels
  • Avoid fixed heights and overflow: hidden on text areas
  • Click through the entire site at 200 % zoom
  • Pay special attention to menus, buttons, and forms

Recommended tool: Browser zoom

AI visibility

Blocking AI via meta tag

Problem: Besides robots.txt, you can also control AI systems' access directly in the page header – something that's often overlooked.

Why it matters: A meta tag lets you signal, page by page, whether content may be used for AI training and AI answers. That way, you make a deliberate choice instead of leaving it to chance.

How to fix it:

  • Decide whether your content should appear in AI answers (visibility) or stay protected
  • Add the appropriate meta tag to the <head>
  • Keep the setting consistent with robots.txt and llms.txt
  • Document your decision and review it regularly

Recommended tool: Theme header / SEO plugin

Performance

Compressed delivery (gzip / Brotli)

Problem: When HTML, CSS, and JavaScript are delivered uncompressed, unnecessary kilobytes travel across the network.

Why it matters: Compression (gzip or the more modern Brotli) often shrinks text files by 70–80 %. It's one of the biggest load-time levers for minimal effort.

How to fix it:

  • Check whether the server delivers compressed content (response header content-encoding)
  • Enable Brotli or gzip in the hosting panel or via a server rule
  • Use a caching plugin that supports compression
  • Measure load time again after making the change

Recommended tool: PageSpeed Insights / Browser-DevTools

Security

TLS version

Problem: Some servers still allow outdated encryption versions like TLS 1.0 or 1.1.

Why it matters: Old TLS versions are considered insecure and are flagged by modern browsers. TLS 1.2 and 1.3 are current.

How to fix it:

  • Check the supported TLS versions with an SSL test
  • Disable TLS 1.0 and 1.1 at the server level (via your host if needed)
  • Enable TLS 1.2 and 1.3
  • Test the site, forms, and payment paths after the change

Recommended tool: SSL Labs Server Test

Technology

Shop system detected

Problem: If you run an online shop, additional technical and legal requirements apply – ones that often get overlooked in everyday business.

Why it matters: Shop systems bring their own topics: order button, price information, right of withdrawal, payment data, and considerably more technology under the hood. If you know which system is running, you can check and secure it specifically.

How to fix it:

  • Keep your shop system and extensions consistently up to date
  • Check the legal requirements for shops (order button, prices, right of withdrawal, terms and conditions)
  • Regularly test checkout and payment methods yourself
  • Take a backup before every update

Recommended tool: Shop system backend

Technology

Blacklist entry (server IP)

Problem: Your server's IP address can end up on a spam blacklist – often through no fault of your own, because of other customers on the same server.

Why it matters: If the server IP is on a blacklist, your emails end up in spam or are rejected entirely. The website's availability can suffer too.

How to fix it:

  • Check the server IP with a blacklist checker
  • If it's listed, determine the cause (spam sending, hacked site)
  • Request delisting from the relevant blacklist operator
  • For recurring problems, switch hosts or use a dedicated IP

Recommended tool: MXToolbox Blacklist Check

Technology

Blacklist entry (domain reputation)

Problem: Not just the IP – your domain can also develop a bad reputation, for example after a hack or through spam sending.

Why it matters: A poor domain reputation means emails don't arrive and browsers or search engines warn visitors about your site.

How to fix it:

  • Check your domain reputation with a reputation service
  • If there are warnings, fix the cause (clean up a hack, set up SPF/DKIM/DMARC)
  • Request delisting from the blacklist operator
  • Make sure your sending practices are clean and compliant

Recommended tool: MXToolbox / Google Postmaster Tools

Security

Default user role

Problem: If registration is open and the default role is too high (e.g. editor or administrator), outsiders can gain far-reaching privileges.

Why it matters: New users should get the lowest possible privileges. A default role set too high is a serious security risk.

How to fix it:

  • Under Settings › General, set the default role to “Subscriber”
  • Only enable open registration if truly necessary
  • Assign roles sparingly and deliberately
  • Regularly check the user list for unknown accounts

Recommended tool: WordPress Settings

Technology

System email addresses

Problem: WordPress often sends system emails (password reset, notifications) from an address like wordpress@your-domain that doesn't exist at all.

Why it matters: Incorrect or nonexistent sender addresses end up in spam or get rejected – important system emails then never arrive.

How to fix it:

  • Set the sender address to a real, existing mailbox
  • Configure sending via SMTP instead of the PHP mail() function
  • Keep the admin email address up to date
  • Test delivery once (e.g. a password reset)

Recommended tool: SMTP plugin (e.g. WP Mail SMTP)

Security

Inactive plugins and themes

Problem: Deactivated plugins and themes often stay installed – and no longer get updated.

Why it matters: Even inactive code can contain security vulnerabilities that can be exploited. What isn't needed should be deleted.

How to fix it:

  • Fully delete unneeded plugins and themes instead of just deactivating them
  • Keep a current default theme as a fallback
  • Create a backup before deleting
  • Regularly clean out what you no longer need

Recommended tool: WordPress Dashboard

Technology

Database version

Problem: WordPress runs on MySQL or MariaDB. Outdated database versions no longer receive security updates and slow down the site.

Why it matters: An up-to-date database is more secure, faster, and compatible with newer WordPress versions.

How to fix it:

  • Check the version in your hosting panel or under Tools › Site Health
  • Update to a supported version with your host
  • Create a full backup beforehand
  • Test the site's functions after the update

Recommended tool: Hosting panel / Site Health

Technology

PHP memory limit

Problem: If the PHP memory limit (memory_limit) is too low, pages fail with errors – especially with many plugins or in a shop.

Why it matters: Enough memory ensures stable operation. Too little leads to blank pages and failed processes.

How to fix it:

  • Check the current limit under Site Health
  • Increase it to a sensible value (usually 256 MB or more)
  • Set the value in your hosting panel, in wp-config.php, or in php.ini
  • Test the site after making the change

Recommended tool: Site Health / hosting panel

Security

Comments disabled

Problem: If comments are active but unmoderated, spam bots quickly turn them into a spam and link dumping ground.

Why it matters: Unused comment features are an entry point for spam and hurt your SEO. If you don't need them, turn them off.

How to fix it:

  • Disable comments under Settings › Discussion if not needed
  • Close the comment function on existing posts
  • If needed: enable moderation before publishing
  • Use spam protection

Recommended tool: WordPress Settings / anti-spam plugin

Technology

PHP extensions

Problem: WordPress and many plugins need specific PHP extensions (e.g. mbstring, curl, gd, zip, intl). If one is missing, parts of the site won't work properly or at all.

Why it matters: PHP extensions provide important functions – from image processing to encryption to API calls. If they're missing, errors occur that are hard to track down.

How to fix it:

  • Check under Tools › Site Health which extensions are missing
  • Ask your host to enable the recommended PHP extensions
  • Test the affected features after activation
  • On shared hosting, contact support if needed

Recommended tool: WordPress Site Health / hosting support

Performance

Autoload data

Problem: In the database table wp_options, data marked “autoload” is loaded on every page visit. Over the years, this often accumulates megabytes of leftover data from uninstalled plugins.

Why it matters: Too much autoload data slows down every single page, because it's loaded completely from the database on every visit.

How to fix it:

  • Check the size of the autoload data (Site Health or a database plugin)
  • Clean up orphaned entries from uninstalled plugins – back up first!
  • Switch large entries to “autoload = no” if they're not needed on every visit
  • Clean up regularly

Recommended tool: DB cleanup plugin (e.g. Advanced Database Cleaner)

Performance

Object cache

Problem: Without a persistent object cache, WordPress queries the same data from the database again on every single visit.

Why it matters: A persistent object cache (Redis or Memcached) caches database results and noticeably speeds up dynamic pages and shops in particular.

How to fix it:

  • Check whether your host offers Redis or Memcached
  • Enable the service and connect it via a plugin (e.g. Redis Object Cache)
  • Compare load time before/after
  • If issues occur, clear the cache and check compatibility

Recommended tool: Redis Object Cache / Hosting Panel

Technology

Database character set

Problem: Older installations often use the utf8 character set instead of utf8mb4. This causes emojis and some special characters to be stored incorrectly or lost.

Why it matters: utf8mb4 is the modern standard and supports the full range of Unicode. An outdated character set leads to display errors and broken characters.

How to fix it:

  • Check the database's character set and collation (Site Health)
  • Create a full backup before switching
  • Switch the database to utf8mb4 (host support or a migration tool)
  • Afterward, check content for correct display

Recommended tool: Site Health / hosting support

Security

Automatic updates

Problem: If updates are only installed manually, weeks often pass – enough time for known security vulnerabilities to be exploited.

Why it matters: Automatic security updates (at least for WordPress core) close critical vulnerabilities promptly, without you having to think about it.

How to fix it:

  • Keep automatic updates enabled for small security releases (default)
  • Specifically enable automatic updates for important plugins and themes
  • Always use a backup or staging site before larger updates
  • Briefly check the site after updates

Recommended tool: WordPress Dashboard / maintenance plan

Technology

WordPress memory limit

Problem: In addition to the PHP memory limit, WordPress has its own limit (WP_MEMORY_LIMIT). If it's too low, memory-intensive tasks fail.

Why it matters: A sufficient WordPress memory limit ensures stable operation in the admin area and with plugins – too little leads to errors and blank pages.

How to fix it:

  • Check the current limit under Site Health
  • Increase WP_MEMORY_LIMIT (and WP_MAX_MEMORY_LIMIT for the backend) in wp-config.php
  • Make sure the PHP memory limit is at least as high
  • Test after making the change

Recommended tool: wp-config.php / Site Health

Security

Finding malware and backdoors

Problem: After a successful attack, attackers often leave behind hidden malware or backdoors – invisible during normal operation.

Why it matters: Such code reads out data, sends spam, or provides permanent access. The sooner it's found, the smaller the damage.

How to fix it:

  • Regularly check the website and files with a malware scanner (security plugin or host scan)
  • Compare core files against the original from wordpress.org
  • Check suspicious files in the uploads folder
  • After a find, clean up and renew all passwords and security keys (salts)

Recommended tool: security plugin with malware scan

Security

Disabling the backend file editor

Problem: WordPress lets you edit theme and plugin files directly in the backend. Anyone who gains admin access can immediately inject malware through it.

Why it matters: The built-in file editor is rarely needed day to day, but it's a convenient tool for attackers. Disabling it shrinks the attack surface.

How to fix it:

  • In wp-config.php, set define('DISALLOW_FILE_EDIT', true);
  • Make file changes via SFTP or a deployment instead
  • Check that no functionality depends on the editor

Recommended tool: wp-config.php

Security

Number of administrator accounts

Problem: Over the years, multiple accounts with administrator privileges often accumulate – including from former service providers.

Why it matters: Every admin account is a possible entry point. The fewer there are, the lower the risk.

How to fix it:

  • Review the user list and remove or downgrade admin accounts that are no longer needed
  • Give every real user only the role they actually need
  • Immediately lock the access of people who have left
  • Check regularly

Recommended tool: WordPress user management

Security

Database table prefix

Problem: Many installations use the default prefix wp_ for their database tables.

Why it matters: A well-known prefix makes certain automated attacks easier. A custom prefix is a small but worthwhile extra hurdle.

How to fix it:

  • Choose a custom table prefix for new installations
  • On existing sites, change it only with a backup and care (tables and internal references)
  • Consider it part of a security hardening package

Recommended tool: security plugin / hosting support

Security

Two-factor authentication (2FA)

Problem: A password alone can be guessed, intercepted, or reused from data leaks.

Why it matters: With two-factor authentication, you also need a second factor (app code, security key). A stolen password alone is then not enough.

How to fix it:

  • Install a 2FA plugin
  • Make 2FA mandatory for all administrators at minimum
  • Prefer app-based codes (TOTP) over SMS
  • Store recovery codes securely

Recommended tool: 2FA plugin (e.g. WP 2FA)

Technology

Scheduled tasks (WP-Cron)

Problem: WordPress handles scheduled tasks (publishing, backups, updates) via WP-Cron – but this only runs when someone visits the site.

Why it matters: With low traffic, tasks run late or not at all; with high traffic, WP-Cron slows down the site. A real server cron job is more reliable.

How to fix it:

  • Check WP-Cron (Site Health or a plugin)
  • Disable the internal WP-Cron and set up a real server cron job instead
  • Choose a suitable interval
  • Verify that important tasks run reliably

Recommended tool: Hosting panel (cron jobs) / WP Crontrol

Technology

Scheduled actions (Action Scheduler)

Problem: Many plugins (e.g. shops) use Action Scheduler for background tasks. If tasks pile up there, orders, emails, or syncs can get stuck.

Why it matters: An overflowing task queue is a sign of cron problems or overloaded resources – and leads to delayed or missing actions.

How to fix it:

  • Check the status of Action Scheduler (e.g. WooCommerce › Status › Scheduled Actions)
  • Investigate failed tasks
  • Ensure a reliable (server) cron
  • If the backlog persists, check resources or hosting

Recommended tool: Action Scheduler (in the plugin) / Site Health

Technology

REST API

Problem: The WordPress REST API is the programming interface that the block editor, apps, and connected services use to work with your website.

Why it matters: It has two sides: Operation – is it reachable? If it's blocked, the editor, preview, or integrations stop working. Security – it's open by default and can expose some information (e.g. usernames via certain endpoints).

How to fix it:

  • Make sure the REST API is reachable in general (otherwise the editor and apps break)
  • At the same time, secure unneeded, readable endpoints (e.g. restrict the user listing)
  • Use a security plugin that protects without blocking needed functions
  • After making changes, test that the editor and connected services still work

Recommended tool: Site Health / security plugin

Technology

Loopback (self-request)

Problem: For some tasks, WordPress sends a request to itself — a loopback (self-request) — such as for WP-Cron or Site Health. If this is blocked, those tasks fail.

Why it matters: Missing loopback connections cause scheduled tasks to not run and produce misleading error messages in Site Health.

How to fix it:

  • Check the loopback under Tools › Site Health
  • If there are errors, check your host, firewall, or security plugin as the cause
  • If necessary, use a server cron as an alternative
  • Test again after fixing

Recommended tool: Site Health / hosting support

Security

Folder and file permissions

Problem: Files and folders with overly permissive file permissions (e.g. 777, “world-writable”) allow virtually anyone on the server to modify or inject files.

Why it matters: Overly generous permissions are a common entry point: malware can be dropped and configurations manipulated. Secure default permissions significantly reduce the risk.

How to fix it:

  • Generally set folders to 755 and files to 644
  • Protect sensitive files like wp-config.php more restrictively (e.g. 640 or 600)
  • Don't grant 777 permissions – if a plugin or uploader requires it, ask for a more secure solution
  • Check and correct permissions via SFTP or your hosting file manager

Recommended tool: SFTP client / hosting file manager

Logo mit dem Wort „Witte“ in fetter, roter Schreibschrift über „MARKETING“ in grauen Großbuchstaben. Ein graues Rechteck unterstreicht den roten Text und rahmt das Design teilweise ein.

Der Kontakt zu uns

Geschäftszeiten

Mo-Fr. 08:00 – 17:30 Uhr

Weihnachts-Pause

24.12.2024 – 06.01.2025

Ab dem 07. Januar 2025 sind wir wieder im Büro erreichbar.

Du wünscht einen Rückruf?
Hier Nummer eintragen: