VYRAL is a complete, self-hosted social media platform packed into a single PHP file. No complex frameworks. No MySQL. No DevOps headaches. Just upload, configure, and go live — your community is minutes away.
VYRAL is a full-featured microblogging and social networking script inspired by platforms like Bluesky and X/Twitter. Built entirely in PHP with SQLite, it delivers a modern, performant social experience without the complexity of traditional tech stacks.
Upload one PHP file and its assets. SQLite databases are created automatically on first visit. No database servers, no migrations, no build steps.
CSRF tokens, CSP headers, rate limiting, bot protection, IP banning, bad-word auto-flagging, and XSS-safe output escaping — all built in.
Full i18n translation system with English, Spanish, French, and Japanese included out of the box. Add any language by creating a single PHP array file.
A precomputed, complex ranking score weighing likes, comments, views, and hashtag relevance — with personalised interest-based feed boosting for logged-in users.
Sponsored post system with configurable ad slots, rotation, frequency control, and a dedicated admin panel — start earning from day one.
Over 50 features packed into a single, clean codebase — each one production-tested and carefully engineered.
Posts with rich-text formatting (bold/italic markdown), comments, likes on posts and comments, follow/unfollow, @mentions with auto-linking, #hashtags with search and trending, bookmarks, post pinning, view counters, post sharing, and a real-time notification system.
Create timed polls with up to 4 options. Users vote directly from the feed, see live results with animated percentage bars, and polls auto-close at expiry. Poll creator cannot self-vote — keeping engagement authentic.
Smart, dynamic ranking that keeps your feed fresh—automatically prioritizing content based on engagement like comments, likes, and views, with lightweight updates that avoid heavy recalculations.
Logged-in users get a customised timeline: posts from followed users float to the top with a follow bonus + recency sub-sort, blended with interest-based scoring from hashtag interactions. Explore feed stays pure trending.
Full-text search across posts, users, and hashtags. Search history (auto-saved, last 20 queries), type-ahead suggestions, and trending hashtag discovery in the sidebar.
Full admin dashboard with platform analytics charts (30-day users, posts, comments), user management (ban, verify, promote, delete), content reports queue with resolve/dismiss/delete actions, IP tracking, and sponsored posts manager.
Every user gets a personal analytics view: total reach (views), engagement (likes received), follower count, and interactive 30-day charts tracking views, engagement, and new followers per day.
Automatic theme detection via prefers-color-scheme with manual override. Elegant CSS variable system makes customisation effortless — change the entire colour scheme by editing a few lines.
Complete translation system with fallback safety. Ships with English, Spanish, French, and Japanese. Add new languages by dropping a single PHP file into the languages folder. In-app language switcher included.
Full Progressive Web App support with service worker registration. Users can "Add to Home Screen" on mobile for a native-app experience — your social network as a standalone app, zero app-store fees.
Auto-embeds for YouTube, Vimeo, Twitch, Spotify, and direct images/GIFs. Internal post/comment cross-linking with rich embed cards. Open Graph link previews fetched server-side with intelligent caching.
Four-layer bot defense: Blocks automated signups and spam — no CAPTCHA services or third-party dependencies needed.
Built-in support for Mailjet, Brevo (Sendedinblue), MailerSend, and native PHP mail(). Email verification, password reset, notification digests (daily/weekly via cron), and report alerts — all with beautiful HTML templates.
Bad-word auto-flagging with customisable word list, user reporting (spam, harassment, hate speech, misinformation, NSFW), NSFW post tagging, post locking, and report notification emails to admins.
Bio, birthdate, location, timezone, pinned posts, private accounts (followers-only), verified badge system, username change cooldown, and activity history log.
Notification preferences (toggle each type), email summary frequency, blocked users management, password change, email change with re-verification, account privacy toggle, and theme selection.
Private accounts, user blocking (bidirectional), IP banning (timed), user banning (timed), disposable email blocking, rate limiting per IP and per session, CSRF rotation, and comprehensive security headers (CSP, X-Frame-Options etc.).
PHP 8.3+ with SQLite WAL mode, prepared statement caching, in-memory user/post/engagement caching, batched prefetch queries, deferred notification fan-out for popular users, probabilistic cleanup, and configurable PRAGMA tuning for high-performance deployments.
VYRAL is designed to work on the simplest hosting environments — even shared hosting. If you can host a PHP website, you can run VYRAL.
Modern PHP with SQLite3 and PDO extensions enabled (standard on most hosts).
Bundled with PHP — no separate database server to install or maintain.
Apache, Nginx, LiteSpeed, OpenLiteSpeed, Caddy — works with all of them.
Minimal footprint. Database grows organically with your community.
No terminal commands. No build steps. No package managers. Just four simple actions and your social network is online.
Upload the files to your web server's public directory (e.g. public_html/ or /var/www/html/). You can also place them inside a subfolder if you prefer (e.g. /social/).
Make sure the two directories — db/ and cache/ — are writable by the web server. VYRAL will auto-create the SQLite databases and cache files on first load.
Open index.php and locate the BASIC CONFIGURATION section near the top. Customise your platform name, contact email, character limits, and email provider settings. All options are clearly commented.
Navigate to your domain. The database schema will auto-initialise on the first request. Quickly register the first account, as this will be set automatically as the admin. You're live!
If you enabled an email provider, configure the API keys in the configuration section. For daily/weekly notification digests, set up a cron job:
Analytics Integration: Locate line ~4188 in the source code to manually insert tracking scripts, such as Google Analytics.
Desktop Ad Banner: Navigate to line ~5288 to add a 300x300px static banner. Note that this banner is configured for the right sidebar and will only display on desktop viewports.