diff --git a/apps/server/src/static/web.ts b/apps/server/src/static/web.ts
index 9833ed7d5..df2cb4fed 100644
--- a/apps/server/src/static/web.ts
+++ b/apps/server/src/static/web.ts
@@ -60,8 +60,9 @@ const BASE_SECURITY_HEADERS = {
};
const ROOT_TITLE = "Reactive Resume — A free and open-source resume builder";
+// Keep under ~120 characters so Google's mobile SERP snippet is not truncated at 3 lines.
const ROOT_DESCRIPTION =
- "Reactive Resume is a free and open-source resume builder that simplifies the process of creating, updating, and sharing your resume.";
+ "Free, open-source resume builder. Create, update, and share a professional resume in minutes — no ads, no paywall.";
const ROOT_POSTER_PATH = "/videos/timelapse-v1.webp";
const ROOT_FAQ_ITEMS = [
{
diff --git a/apps/web/index.html b/apps/web/index.html
index 8ae633e64..e5d305ce0 100644
--- a/apps/web/index.html
+++ b/apps/web/index.html
@@ -9,7 +9,8 @@
-
+
+
diff --git a/apps/web/src/routes/__root.tsx b/apps/web/src/routes/__root.tsx
index 689f16dc7..e3586bb5c 100644
--- a/apps/web/src/routes/__root.tsx
+++ b/apps/web/src/routes/__root.tsx
@@ -43,8 +43,9 @@ type RouterContext = {
const appName = "Reactive Resume";
const tagline = "A free and open-source resume builder";
const title = `${appName} — ${tagline}`;
+// Keep under ~120 characters so Google's mobile SERP snippet is not truncated at 3 lines.
const description =
- "Reactive Resume is a free and open-source resume builder that simplifies the process of creating, updating, and sharing your resume.";
+ "Free, open-source resume builder. Create, update, and share a professional resume in minutes — no ads, no paywall.";
const iconContextValue: IconProps = { size: 16, weight: "regular" };
export const Route = createRootRouteWithContext()({