A simple SEO inspecter Tool, to get social media card previews
1# @madebydanny / seo-tester
2
4Try it [seo-tester.madebydanny.uk](https://seo-tester.madebydanny.uk/)
5
6> [!IMPORTANT]
7> The app is slow at first, please give it time to do the first scraping
8
9# SEO Inspector *(Vite + React + TypeScript)*
10
11Lightweight web app for scraping a page's metadata and producing an SEO-quality report.
12
13Features
14- Analyze a URL for title, description, Open Graph and Twitter metadata, canonical, lang, viewport, charset, and more.
15- Built with Vite, React, TypeScript and shadcn/ui primitives.
16- Client-side HTML fetch via a CORS proxy and metadata extraction.
17
18Quick start
19
201. Install dependencies
21
22```bash
23cd /Users/danielmorrisey/Desktop/Tangled/seo-inspector-api
24npm install
25```
26
272. Start dev server
28
29```bash
30npm run dev
31```
32
333. Open the app in your browser (usually http://localhost:5173) and go to the main page to use the SEO tester.
34
35Notes about the SEO tester performance improvements
36- In-memory caching: repeated analyses for the same URL use a short (5 minute) cache to avoid refetching HTML.
37- Fetch timeout: network fetches use an 8s AbortController timeout to avoid long hangs.
38- UI responsiveness: removed unnecessary UI delays and shortened the animated counters for a snappier feel.
39
40Testing the improvements
41- Run an analysis on a URL (for example https://github.com). Re-run the same URL and you should see the second run complete faster.
42- Test a slow or non-responsive target to see the 8s timeout and error handling.
43
44Developer notes
45- Type checking: after installing deps run `npx tsc --noEmit` to run TypeScript checks.
46- Linting: `npm run lint` (requires eslint installed via `npm install`).
47- The simple cache is stored in-memory (window.__seo_tester_cache_v1). If you want persistence across reloads, persist to localStorage or a small server-side cache.
48
49Contact
50- For changes or suggestions, open an issue or edit the repo directly.
51
52Enjoy!
53
54**Preview**
55---
56
57
58