A powerful, browser-based web application for analyzing webpage quality using 86 HTML-based metrics. Built with React, Vite, and WebAssembly for blazing-fast performance.
- WASM Integration: Browser-powered analysis with Rust WASM backend
- Profile-Based Analysis: 8 pre-configured profiles (news, blog, e-commerce, etc.)
- Real-Time Analysis: Analyze URLs or paste HTML directly
- Metric Customization: Toggle 86 individual metrics on/off
- Weight Adjustment: Fine-tune metric importance (0.1x - 5.0x)
- Visual Results: Category breakdowns, recommendations, detailed metric tables
- Export/Import: Save and share custom configurations
- Responsive design (mobile, tablet, desktop)
- Dark/light mode support (via shadcn/ui)
- Interactive charts and visualizations
- Real-time metric previews
- Comprehensive tooltips and help text
86 HTML-Based Metrics across 16 categories:
| Category | Metrics | Description |
|---|---|---|
| Content | 14 | Text quality, readability, structure |
| Structure | 5 | Heading hierarchy, document organization |
| Media | 8 | Images, videos, alt text |
| SEO | 12 | Title, meta tags, open graph |
| Links | 4 | Internal/external links, broken links |
| Technical | 6 | HTML validation, performance hints |
| Accessibility | 7 | WCAG compliance, ARIA attributes |
| Mobile | 3 | Responsive design, viewport |
| Authority | 3 | Authorship, credibility signals |
| Language | 2 | Language detection, i18n |
| Forms | 2 | Form elements, validation |
| Structured Data | 3 | Schema.org, microdata |
| Branding | 3 | Brand consistency |
| User Experience | 7 | Navigation, CTAs, usability |
| Business | 4 | E-commerce features |
| Internationalization | 2 | Multi-language support |
Note: Network-based metrics (Performance, Security, Analytics, Error Handling) require server-side analysis and are not available in the browser version.
- Node.js 16+ and npm
- Modern browser with WASM support
# Clone repository
git clone https://github.com/NotGyashu/webpage-quality-analyser.git
cd webpage-quality-analyser/WQA
# Install dependencies
npm install
# Start development server
npm run devOpen http://localhost:5173 in your browser.
# Build for production
npm run build
# Preview production build
npm run preview-
Select Profile: Choose from 8 pre-configured profiles
- General (all-purpose)
- News Article (journalism)
- Blog Post (personal blogs)
- E-commerce (product pages)
- Content Article (long-form)
- Product/Documentation
- Portfolio (personal sites)
- Homepage (landing pages)
-
Input Method: Choose one:
- URL Mode: Enter webpage URL
- HTML Paste: Paste HTML directly
-
Analyze: Click "Analyze" button
-
View Results:
- Overall quality score (0-100)
- Quality verdict (Excellent/Good/Average/Poor/Very Poor)
- Category breakdowns (16 categories)
- Detailed metric scores
- Actionable recommendations
- Browse metrics by category
- Toggle individual metrics on/off
- Use "Enable All" / "Disable All" per category
- See live count of active metrics
- Slide to adjust importance (0.1x - 5.0x)
- Type precise values
- Color-coded priority levels:
- π Low Priority (0.1-0.9)
- β« Normal (1.0-1.4)
- π’ Important (1.5-1.9)
- π΅ High (2.0-2.9)
- π£ Critical (3.0+)
- Export: Download current settings as JSON
- Import: Upload previously saved configuration
- Reset: Restore all default settings
- 90-100: Excellent - Industry-leading quality
- 70-89: Good - Solid quality with minor improvements
- 50-69: Average - Meets basic standards
- 30-49: Poor - Significant issues present
- 0-29: Very Poor - Major problems require attention
Each category is scored independently:
- Content: Text quality and organization
- SEO: Search engine optimization
- Technical: HTML standards and performance
- Accessibility: Inclusive design compliance
Prioritized suggestions for improvement:
- High Priority: Critical issues affecting core functionality
- Medium Priority: Important optimizations
- Low Priority: Nice-to-have enhancements
- Frontend: React 19.1.1
- Build Tool: Vite 7.1.9
- State Management: Zustand
- UI Components: shadcn/ui + Tailwind CSS
- WASM Package: webpage_quality_analyzer@1.0.2
- Icons: Lucide React
- Charts: Recharts
WQA/
βββ src/
β βββ components/
β β βββ analyzer/ # Input components
β β βββ configuration/ # Customization UI
β β βββ results/ # Results display
β β βββ layout/ # Header, navigation
β β βββ common/ # Error boundaries, loaders
β β βββ ui/ # shadcn/ui components
β βββ hooks/
β β βββ useWasmAnalyzer.js # WASM integration
β βββ store/
β β βββ analysisStore.js # Analysis state
β β βββ configStore.js # Configuration state
β βββ utils/
β β βββ wasmLoader.js # WASM initialization
β β βββ configBuilder.js # Config formatting
β βββ constants/
β β βββ metrics.js # Metric definitions
β βββ App.jsx # Main application
βββ public/ # Static assets
βββ package.json
Create custom analyzer profiles by adjusting:
- Enabled metrics
- Metric weights
- Custom thresholds
- Penalties and bonuses
Export as JSON for reuse:
{
"enabledMetrics": {
"word_count": true,
"readability_fk": true
},
"metricWeights": {
"seo_title_quality": 2.0,
"heading_depth": 1.5
},
"exportedAt": "2025-10-10T...",
"version": "1.0"
}- URL analysis works
- HTML paste mode works
- Profile selection changes results
- All 8 profiles functional
- Metric toggles apply to analysis
- Weight adjustments affect scores
- Export configuration downloads JSON
- Import configuration restores settings
- Reset to defaults works
- Responsive on mobile/tablet/desktop
- Error handling displays correctly
- Loading states show properly
- Chrome 90+
- Firefox 88+
- Safari 14+
- Edge 90+
# Development
npm run dev # Start dev server
npm run build # Production build
npm run preview # Preview production build
npm run lint # Run ESLint
# Maintenance
npm run clean # Clean build artifacts
npm run update # Update dependencies# Add shadcn/ui component
npx shadcn@latest add [component-name]
# Example
npx shadcn@latest add dialog
npx shadcn@latest add dropdown-menuWASM not loading
- Clear browser cache
- Check console for CORS errors
- Ensure WASM file size ~2.1MB
Scores always 0
- Verify WASM init() called
- Check browser WASM support
- Try different browser
Network metrics showing N/A
- Expected behavior (browser security sandbox)
- Use native builds for full metrics
Custom config not applying
- Check console for method name errors
- Verify camelCase method calls
- Re-export and re-import config
# Install Vercel CLI
npm install -g vercel
# Deploy
vercel deploy# Build command
npm run build
# Publish directory
distFROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
EXPOSE 3000
CMD ["npm", "run", "preview"]Contributions welcome! Please:
- Fork the repository
- Create feature branch (
git checkout -b feature/AmazingFeature) - Commit changes (
git commit -m 'Add AmazingFeature') - Push to branch (
git push origin feature/AmazingFeature) - Open Pull Request
This project is licensed under the MIT License - see LICENSE file for details.
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: support@example.com
- Phase 1: Project Setup
- Phase 2: WASM Integration
- Phase 3: Basic UI
- Phase 4: Results Display
- Phase 5: Metric Customization
- Phase 6: Import/Export
- Phase 7: Error Handling & Polish
- Phase 8: Batch Analysis
- Phase 9: Analysis History
- Phase 10: Collaboration Features
Version: 1.0.0
Last Updated: October 2025
Status: Production Ready β