{% extends "base.html" %} {% block title %}{{ seo.title if seo is defined and seo else 'news48 — Verified News That Disappears in 48 Hours' }}{% endblock %} {% block json_ld %} {% if seo is defined and seo and seo.json_ld %} {% for item in seo.json_ld %} {% endfor %} {% endif %} {% endblock %} {% block body_class %}page-landing{% endblock %} {% block content %}

Fact-checked news, refreshed every 48 hours

news48 fetches your feeds, rewrites stories for clarity, checks claims against live evidence, and removes everything after 48 hours. No subscription, no archives. Just relevant information, verified and ready.

Open Live Feed View Documentation

live feed status

{{ stats.live_stories }} stories live {% if stats.verified %}{{ stats.verified }} verified{% endif %} {{ stats.clusters }} active topics {% if stats.last_updated %} updated {{ stats.last_updated | relative_time }} {% endif %}

Browse the current 48-hour window. Stories are grouped by topic, verified with sources visible, and automatically removed when their time expires.

why it matters

Noise Reduction

Similar stories grouped together. No duplicate headlines pretending to be news. Just the core topics people are talking about.

Signal Boost

Every claim linked to its sources. You see exactly why news48 verified or disputed something. No black box decisions.

Fresh Start Daily

Stories vanish after 48 hours. No endless archive of old noise. Just what's happening now, when you need to know it.

get started

Deploy your own news pipeline in minutes. No vendor lock-in, no data sent to third parties, no limits. The system starts, schedules itself, and runs indefinitely on your hardware. Complete control. Full transparency. Everything refreshes autonomously, and everything older than 48 hours disappears by design.

curl -fsSL https://raw.githubusercontent.com/malvavisc0/news48/master/scripts/install.sh | bash

The installer adds a news48 CLI command to your PATH. After installation, run news48 stats, news48 feeds list, or news48 briefing directly from your terminal — no need to type the full docker compose exec command.

{% endblock %}