Skip to content
https://normalmapai.com

Content

· 9 checks — Internal links, mixed-content guards, Open Graph previews, and structured data rolled into one auditable list.
SCORE
90
GRADE
A
FIX
1
REVIEW
2
PASS
6
INFO
0
Checks
9
6 PASS 2 REVIEW 1 FIX
F
Image Optimization
Action
6 issues found across 54 images
FIX
6 issues found across 54 images
Warning::
12 images significantly larger than display size
Resizing to display dimensions could save approximately 2186 KB.
Got: ~2186 KB wasted
Info::
31 below-fold images missing loading="lazy"
Lazy loading defers below-fold images, reducing initial page weight.
Info::
33 of 54 images use legacy formats
Warning::
Total image weight: 2493 KB (2.4 MB)
Consider compressing images, using modern formats, and serving appropriately sized images.
Info::
1 image(s) wider than 400px without srcset (no responsive serving)
These images deliver the same asset to every viewport (mobile, tablet, retina). Adding srcset / <picture> lets the browser pick a viewport-appropriate variant and typically saves 40-70% of bytes on mobile. Sample: https://normalmapai.com/images/marketing/features-pbr-studio.webp.
Info::
10 image(s) rendered at a different aspect ratio than the source
The displayed dimensions distort the source -- CSS is forcing the image into a container at the wrong ratio, producing visible stretching or squashing. Either crop the source to match or use object-fit: cover (and accept the crop). Sample: https://normalmapai.com/samples/rock_wall_08.jpg, https://normalmapai.com/samples/rusty_metal_02.jpg, https://normalmapai.com/samples/wood_planks.jpg (+7 more).
C
Structured Data
Action
1 JSON-LD block(s) found — some improvements recommended.
REVIEW
1 JSON-LD block(s) found — some improvements recommended.
Critical::
Malformed JSON-LD block #1
JSON parse error: Mismatch type map[string]interface {} with value array "at index 0: mismatched type with value\n\n\t[{\"@context\":\"https://schema.org\n\t^...............................\n"

JSON parse error: Mismatch type map[string]interface {} with value array "at index 0: mismatched type with value\n\n\t[{\"@context\":\"https://schema.org\n\t^...............................\n"

Why this matters

JSON-LD block fails to parse — Google ignores the entire block, so structured data effectively isn't there.

Learn more ▾

Common causes: trailing comma, single quotes instead of double, unescaped quote in a string value. Validate at https://validator.schema.org/ or Search Console's Rich Results Test.

Source: schema.org / Google Search Central

JSON-LD Blocks

Block 1 : SoftwareApplication
0 properties Invalid
Invalid JSON: Mismatch type map[string]interface {} with value array "at index 0: mismatched type with value\n\n\t[{\"@context\":\"https://schema.org\n\t^...............................\n"
[
  {
    "@context": "https://schema.org",
    "@type": "SoftwareApplication",
    "name": "NormalMapAI",
    "alternateName": [
      "normalmap ai",
      "NormalMapAI",
      "normal map generator"
    ],
    "applicationCategory": "DesignApplication",
    "operatingSystem": "Web browser",
    "offers": {
      "@type": "Offer",
      "price": "0",
      "priceCurrency": "USD"
    },
    "description": "Free normal map generator by NormalMapAI. Convert any photo into a normal map with live 3D preview — plus height, roughness, AO and more. Private in-browser; export for Unity, Unreal, Godot and Blender.",
    "url": "https://normalmapai.com",
    "image": "https://normalmapai.com/og.png",
    "featureList": [
      "Normal map generator with live 3D",
      "Seamless texture maker",
      "Full map set in one ZIP",
      "Engine-ready export",
      "Transparent PNG cutout",
      "Private, GPU-fast path"
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "WebSite",
    "name": "NormalMapAI",
    "url": "https://normalmapai.com",
    "description": "Free normal map generator by NormalMapAI. Convert any photo into a normal map with live 3D preview — plus height, roughness, AO and more. Private in-browser; export for Unity, Unreal, Godot and Blender."
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "What is the best free online normal map generator and browser normal map generator without login?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "NormalMapAI (normalmapai.com) is a free online normal map generator that converts 2D photos into production-ready tangent-space normal maps and full PBR texture packs directly in your browser. Unlike server-side tools that require sign-up or add watermarks, this normal map generator runs 100% locally via WebGL2 and Canvas with instant PNG and ZIP export."
        }
      },
      {
        "@type": "Question",
        "name": "How do I use a normal map generator to convert a 2D photo in a free normal map generator for Blender, Unity, or UE5?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Upload your JPG, PNG, or WebP image into the NormalMapAI normal map generator, tune Normal Strength, Detail, and Height on the live 3D shader ball, and pick your target engine. Choose OpenGL (Y+) in the normal map generator for Blender, Unity, and Godot, or DirectX (Y-) for Unreal Engine 5, then export your normal map PNG or engine ZIP."
        }
      },
      {
        "@type": "Question",
        "name": "Should I choose OpenGL (Y+) or DirectX (Y-) in a normal map generator when exporting from a normal map generator?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Choose OpenGL (Y+) in the normal map generator for Blender, Unity, Godot 4, and Three.js, where the green channel points up. Choose DirectX (Y-) in the normal map generator for Unreal Engine 5, 3ds Max, and DirectX-based pipelines, where the green channel points down."
        }
      },
      {
        "@type": "Question",
        "name": "How do I fix seams or blurry details in a normal map generator when using an online normal map generator?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "To fix visible tile borders, enable Make Seamless or open the Seamless Texture tool before exporting from the normal map generator and verify repeating edges on a 2x2 or 4x4 grid. To sharpen blurry relief on brick, stone, or fabric, raise Normal Strength and Fine Detail inside the normal map generator while keeping pre-blur low."
        }
      },
      {
        "@type": "Question",
        "name": "In a normal map generator workflow, how does a normal map generator differ from a bump, height, or displacement map?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "A normal map generator encodes XYZ surface slopes in RGB channels so real-time shaders fake directional lighting on low-poly meshes without adding triangles. A bump map or height map stores single-channel grayscale elevation, whereas a displacement map physically moves subdivided vertices at render time to alter the silhouette."
        }
      },
      {
        "@type": "Question",
        "name": "Can a normal map generator create roughness, AO, height, and metallic maps in one normal map generator pass?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Yes—NormalMapAI pairs a normal map generator with a multi-channel PBR pipeline that derives normal, 16-bit height, displacement, roughness, ambient occlusion (AO), metallic, and specular maps from one photo. You can inspect every channel in the normal map generator 3D viewport and download all maps together in one ZIP bundle."
        }
      },
      {
        "@type": "Question",
        "name": "Is the NormalMapAI normal map generator safe for commercial assets, and does this normal map generator stay local?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Yes, every texture you create with the NormalMapAI normal map generator is 100% royalty-free for commercial games, archviz, VFX, and client projects. Because this normal map generator executes entirely inside your browser via local WebGL2 shaders, your proprietary source photos never leave your device."
        }
      },
      {
        "@type": "Question",
        "name": "What is the best browser normal map generator alternative to Photoshop or Materialize for a normal map generator?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "The NormalMapAI normal map generator is a fast, zero-install browser alternative to discontinued Photoshop 3D filters, Materialize, and CrazyBump. This online normal map generator gives you real-time slope controls, OpenGL/DirectX Y-channel flipping, seamless tiling repair, and interactive 3D PBR preview on Windows, macOS, and Linux."
        }
      },
      {
        "@type": "Question",
        "name": "What Strength and Detail settings work best in a normal map generator when tuning a normal map generator preview?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "In the NormalMapAI normal map generator, rough brick, rock, and concrete look best with medium-to-high Normal Strength and balanced Detail for deep mortar grooves. Fine wood grain, leather, and woven fabric work best in the normal map generator with moderate Strength and crisp high-frequency Detail."
        }
      },
      {
        "@type": "Question",
        "name": "How do I connect a normal map generator PNG from this normal map generator to Blender Principled BSDF?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Export an OpenGL (Y+) PNG or Blender ZIP from the NormalMapAI normal map generator, load the normal map into an Image Texture node in Blender, and set Color Space to Non-Color. Pipe the color output into a Normal Map node (Tangent Space) and connect that to the Normal input of your Principled BSDF shader."
        }
      },
      {
        "@type": "Question",
        "name": "Does this online normal map generator support 4K normal map generator export and 16-bit height maps?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Yes, the NormalMapAI normal map generator exports at 512, 1024, 2048 (2K), and 4096 (4K) pixels. While color and normal maps export as 8-bit PNGs from the normal map generator, height and displacement maps export as 16-bit PNGs so deep relief stays free of stair-step banding."
        }
      },
      {
        "@type": "Question",
        "name": "Why does my normal map generator output look inverted, and how do I flip Y in the normal map generator?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Inverted lighting happens when the green (Y) channel orientation from your normal map generator does not match your game engine, or when sRGB color space is left turned on. Flip between OpenGL and DirectX in the normal map generator export preset, and mark the texture as Normal Map / Non-Color in your engine."
        }
      }
    ]
  }
]
B
Brand Presence
Site-name consistency, favicon, social image, meta tags, schema, and contact signals
REVIEW

Brand Presence

Your brand name differs across channels — visitors see inconsistent identity.

B

70/100

Site name appears as

Page titleLive 3D Preview | NormalMapAI
og:site_nameNormalMapAI
twitter:sitehttps://normalmapai.com
Organization.name—

Inconsistent — names differ across channels

Brand assets

Favicon

15/15

covers multiple sizes, apple-touch-icon + SVG

Social share image

20/20

og:image + twitter:image set

Meta completeness

20/20

Organization schema

0/15

Contact info discoverable

10/10

contact page + mailto link

Findings

  • Brand name differs across channels — users see inconsistent identity
  • No Organization schema — Google can't render your logo in the knowledge panel

How consistently your brand appears across channels — shared link previews, structured data, favicon, contact info.

A+
Mixed Content
No mixed content detected — all resources use HTTPS.
PASS
No mixed content detected — all resources use HTTPS.
Info::
No mixed content detected — all resources use HTTPS
A+
Open Graph
Open Graph tags are well configured for social sharing.
PASS
Open Graph tags are well configured for social sharing.
Info::
og:title is long (64 characters)
Titles over 60 characters may be truncated in social sharing previews.
Got: 64 chars Expected: 25–60 chars
Info::
og:description is long (202 characters)
Descriptions over 200 characters may be truncated in social sharing previews.
Got: 202 chars Expected: 55–200 chars
URL: 64 chars

Titles over 60 characters may be truncated in social sharing previews.

Expected: 25–60 chars
Why this matters

og:title borderline-too-long — Facebook/LinkedIn may truncate. Aim for ~60-70 characters max.

Source: Open Graph Protocol

URL: 202 chars

Descriptions over 200 characters may be truncated in social sharing previews.

Expected: 55–200 chars
Why this matters

og:description borderline-too-long — social platforms truncate around ~200 chars.

Source: Open Graph Protocol

Preview

normalmapai.com

Free Normal Map Generator Online — Live 3D Preview | NormalMapAI

Free normal map generator by NormalMapAI. Convert any photo into a normal map with live 3D preview — plus height, roughness, AO and more. Private in-browser; export for Unity, Unreal, Godot and Blender.

Preview quality · Twitter/X A+ · 95/100

Description will be truncated (204 chars / 200 max)

  • twitter:card — summary_large_image
  • twitter:title — Free Normal Map Generator Online — Live 3D Preview | NormalMapAI
  • twitter:description — Free normal map generator by NormalMapAI. Convert any photo into a normal map with live 3D preview — plus height, rou...
  • twitter:image — https://normalmapai.com/og.png
  • Description will be truncated on Twitter/X (204 chars, max 200)

    → Tighten the description to ≤200 characters

NORMALMAPAI.COM

Free Normal Map Generator Online — Live 3D Preview | NormalMapAI

Free normal map generator by NormalMapAI. Convert any photo into a normal map with live 3D preview — plus height, roughness, AO and more. Private in-browser; export for Unity, Unreal, Godot and Blender.

Preview quality · Facebook A · 90/100

Title will be truncated (66 chars / 60 max)

Description will be truncated (204 chars / 155 max)

  • og:title — Free Normal Map Generator Online — Live 3D Preview | NormalMapAI
  • og:description — Free normal map generator by NormalMapAI. Convert any photo into a normal map with live 3D preview — plus height, rou...
  • og:image — https://normalmapai.com/og.png
  • og:type — website
  • og:url — https://normalmapai.com
  • og:site_name — NormalMapAI
  • Title will be truncated on Facebook (66 chars, max 60)

    → Shorten og:title to ≤60 characters

  • Description will be truncated on Facebook (204 chars, max 155)

    → Tighten og:description to ≤155 characters

Free Normal Map Generator Online — Live 3D Preview | NormalMapAI

normalmapai.com

Preview quality · LinkedIn A+ · 95/100

Description will be truncated (204 chars / 150 max)

  • og:title — Free Normal Map Generator Online — Live 3D Preview | NormalMapAI
  • og:description — Free normal map generator by NormalMapAI. Convert any photo into a normal map with live 3D preview — plus height, rou...
  • og:image — https://normalmapai.com/og.png
  • Description will be truncated on LinkedIn (204 chars, max 150)

    → Tighten og:description to ≤150 characters

normalmapai.com

Free Normal Map Generator Online — Live 3D Preview | NormalMapAI

Free normal map generator by NormalMapAI. Convert any photo into a normal map with live 3D preview — plus height, roughness, AO and more. Private in-browser; export for Unity, Unreal, Godot and Blender.

Preview quality · Slack A+ · 100/100
  • og:title — Free Normal Map Generator Online — Live 3D Preview | NormalMapAI
  • og:description — Free normal map generator by NormalMapAI. Convert any photo into a normal map with live 3D preview — plus height, rou...
  • og:image — https://normalmapai.com/og.png

Social preview quality

Averaged across Twitter/X, Facebook, LinkedIn, and Slack.

A+ · 95/100
FieldTwitter/XFacebookLinkedInSlack
og:title
og:description
og:image
og:type
og:url
og:site_name
twitter:card———
twitter:title———
twitter:description———
twitter:image———
A+
Open Graph / Twitter Card Depth
OG image dimensions and Twitter card configuration look healthy
PASS
OG image dimensions and Twitter card configuration look healthy
Info::
OG/Twitter Card depth is clean -- dimensions, card type, and inheritance all valid
A+
Rich Results Eligibility
1 JSON-LD block(s) declaring 0 schema type(s)
PASS
1 JSON-LD block(s) declaring 0 schema type(s)
A+
Autoplay Media
No autoplay media on the page
PASS
No autoplay media on the page
Info::
No autoplay media on the page
All checks on this page are automated. Results are estimates - run targeted manual reviews when the score affects a release decision.

Send Feedback