{"record":{"id":"ea457f7d77c9c820","repo":"vercel/next.js","slug":"detected-a-three-dot-character-at-segmen","errorCode":null,"errorMessage":"Detected a three-dot character ('…') at ('${segmentName}'). Did you mean ('...')?","messagePattern":"Detected a three-dot character \\('…'\\) at \\('(.+?)'\\)\\. Did you mean \\('\\.\\.\\.'\\)\\?","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/next/src/shared/lib/router/utils/sorted-routes.ts","lineNumber":98,"sourceCode":"    }\n\n    // The next segment in the urlPaths list\n    let nextSegment = urlPaths[0]\n\n    // Check if the segment matches `[something]`\n    if (nextSegment.startsWith('[') && nextSegment.endsWith(']')) {\n      // Strip `[` and `]`, leaving only `something`\n      let segmentName = nextSegment.slice(1, -1)\n\n      let isOptional = false\n      if (segmentName.startsWith('[') && segmentName.endsWith(']')) {\n        // Strip optional `[` and `]`, leaving only `something`\n        segmentName = segmentName.slice(1, -1)\n        isOptional = true\n      }\n\n      if (segmentName.startsWith('…')) {\n        throw new Error(\n          `Detected a three-dot character ('…') at ('${segmentName}'). Did you mean ('...')?`\n        )\n      }\n\n      if (segmentName.startsWith('...')) {\n        // Strip `...`, leaving only `something`\n        segmentName = segmentName.substring(3)\n        isCatchAll = true\n      }\n\n      if (segmentName.startsWith('[') || segmentName.endsWith(']')) {\n        throw new Error(\n          `Segment names may not start or end with extra brackets ('${segmentName}').`\n        )\n      }\n\n      if (segmentName.startsWith('.')) {\n        throw new Error(","sourceCodeStart":80,"sourceCodeEnd":116,"githubUrl":"https://github.com/vercel/next.js/blob/0eb377541648e63402a47b38fee00a8d0ce8f8f1/packages/next/src/shared/lib/router/utils/sorted-routes.ts#L80-L116","documentation":"_insert detects the single Unicode ellipsis character '…' inside a bracketed dynamic segment name. It is almost always a typo of the three ASCII dots '...' used for catch-all routes; left uncorrected the segment would be treated as an ordinary named slug and silently mis-route.","triggerScenarios":"A route segment uses the Unicode three-dot ellipsis character.","commonSituations":"Typing '[…slug]' with the … character instead of three periods in a folder name.","solutions":["Replace the three-dot character … with three periods ... in the segment name."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"0eb377541648e63402a47b38fee00a8d0ce8f8f1","analyzedAt":"2026-08-19T02:10:13.922Z","contentChangedAt":"2026-08-19T02:10:13.922Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}