Описание
Serve WebP/AVIF versions of your images and subsetted (smaller) web fonts, injected additively
into the page. Originals are kept as a fallback, so a page can never break. Optimised files live
on your own server — no CDN, no monthly lock-in, deactivating never breaks the site.
Every site starts with 50 free optimizations — no purchase, no account required. After that, one-time credit packs keep you going, and credits never expire.
How it works: <img> tags are wrapped in <picture> with AVIF/WebP sources (original kept as
fallback), CSS background-images are served as AVIF via an injected style block, and web fonts
are subsetted and served locally — with the theme’s Google Fonts request removed, so no visitor
IP is sent to Google for fonts.
What gets optimised — and what doesn’t
So you know exactly what to expect — we’d rather under-promise:
- Images from 10 KB are converted to WebP/AVIF (original kept as fallback). Smaller images
are left unchanged — the gain isn’t worth it. - CSS
background-images (raster jpg/png) are served as AVIF via an injected style block
(no edits to your CSS). - Fonts from 50 KB are subsetted to the characters your pages actually use and served
locally; the matching Google Fonts<link>is removed (closing the GDPR concern of visitor
IPs going to fonts.googleapis.com). Smaller fonts are treated as already optimised. - Already-optimal formats are left untouched: images already served as AVIF, and SVG
(vector — stays as-is). - Only assets from your own domain are optimised. Images and fonts embedded from third
parties (maps, external widgets, etc.) are never touched — they stay on their original server. - Known limits: images injected by JavaScript after page load (some sliders/lazy-loaders)
and background<video>are not covered. A font is only replaced when a matching source is
found. Deleting the plugin removes the on-the-fly rewrites (page returns to original) but
leaves the optimised files inwp-content/uploads/fepo/(they belong to you).
External services
This plugin connects to two external services. Both are described below.
1. portal.fepo.app (fepo optimization service)
Operated by fepo, this service generates the optimized images and fonts. The actual optimization runs on fepo’s servers — it cannot be done locally by the plugin (WebP/AVIF encoding and font subsetting of your pages).
What is sent and when:
- When you optimize images, fonts, or CSS backgrounds: the URLs of the pages or Media Library images being optimized, so fepo’s server can fetch and process them.
- An anonymous site hash and your site’s hostname, so your credit balance is tied to your account.
What is NOT sent: no personal data of your visitors, no content from posts, pages, or comments, no database contents, and no file contents of images or fonts that are not being optimized.
The optimization itself is performed by fepo’s server fetching the given page or image URLs (like any browser would) and returning WebP/AVIF images or subsetted fonts. No private endpoints are accessed. The optimized files are then stored on your own server — not on a CDN — and delivered directly from there.
You must explicitly consent to this data transmission via a checkbox before the first optimization. The consent is stored locally and can be revoked at any time by deactivating the plugin.
Terms of service: https://fepo.app/agb
Privacy policy: https://fepo.app/datenschutz
2. Google Fonts (fonts.googleapis.com)
To show the real download size of a Google Font on the Fonts tab, the plugin asks Google’s Fonts API — from your WordPress server, in wp-admin — how large the browser-loaded WOFF2 files for a given font family are.
What is sent and when: only the font family name and its weights (e.g. «Roboto» with weights 400,700), and only while you are viewing the Fonts tab in the admin. No visitor data, no personal data, and no site content are sent. The request is made server-to-server (from your host to Google), not from your visitors’ browsers.
Terms of service: https://policies.google.com/terms
Privacy policy: https://policies.google.com/privacy
Disclaimer
This plugin is provided «as is», without warranty of any kind. fepo is not liable for any damage, data loss, or downtime arising from its use. Your originals are always kept as a fallback, so an optimization can never break your page.
Скриншоты



Установка
- Upload the plugin ZIP via Plugins Add New Upload, or copy the folder to wp-content/plugins/.
- Activate it. Open «fepo Optimizer» in the admin menu and optimize your pages.
Отзывы
Нет отзывов об этом плагине.
Участники и разработчики
«fepo — Image & Font Optimizer» — проект с открытым исходным кодом. В развитие плагина внесли свой вклад следующие участники:
УчастникиПеревести «fepo — Image & Font Optimizer» на ваш язык.
Заинтересованы в разработке?
Посмотрите код, проверьте SVN репозиторий, или подпишитесь на журнал разработки по RSS.
Журнал изменений
1.1.0
- Die optimierten Bilder und Fonts werden jetzt auf jeder Domain ausgeliefert — die frühere Domain-Bindung der Auslieferung wurde entfernt. Ihre lokal gespeicherten Dateien gehören Ihnen und funktionieren auch nach einem Umzug der Website.
- Die eingebettete CSS (@font-face und CSS-Hintergründe) wird jetzt auf dem WordPress-Standardweg über wp_add_inline_style() ausgegeben.
- Der Front-End-Ausgabepuffer wird am shutdown-Hook ausdrücklich geschlossen.
- Sicherheit: Beim Import einer ZIP-Datei werden ausschließlich Bild- und Font-Dateien übernommen; unerwartete Dateitypen werden nach dem Entpacken entfernt.
- Der Abschnitt „External services» in der readme dokumentiert jetzt zusätzlich die Nutzung der Google-Fonts-API (zur Anzeige der Download-Größe im Fonts-Tab).
- Übersetzungen werden künftig über translate.wordpress.org bereitgestellt; mitgelieferte Sprachdateien wurden entfernt.
1.0.9
- Intern: Text-Domain und Plugin-Slug an den WordPress.org-Slug „fepo-image-font-optimizer» angeglichen (behebt die Text-Domain-Warnungen des Plugin-Checks). Keine Änderung an Funktion oder gespeicherten Daten.
1.0.8
- Korrektur: Der Hinweis beim Credit-Kauf ohne Zustimmung nennt keine Richtung mehr („oben») — die Formulierung passt jetzt unabhängig von der Position der Zustimmungs-Box.
1.0.7
- Verbessert: Die Zustimmung zur Datenverarbeitung wird jetzt gut sichtbar oben angezeigt (statt in einem Tab versteckt). Die Optimierungs-Tabs erscheinen erst nach der Einwilligung — so ist klar erkennbar, dass vor der Zustimmung nichts übertragen wird.
1.0.6
- Behoben: „Credits kaufen» zeigte vor Ihrer Zustimmung einen leeren Kasten (die Kaufpakete werden erst nach Einwilligung geladen). Jetzt erscheint stattdessen ein Hinweis, dass zuerst die Zustimmung nötig ist.
1.0.5
- Datenschutz: Vor Ihrer Zustimmung wird jetzt gar kein Kontakt mehr zu portal.fepo.app aufgebaut — auch der Guthaben-Abruf (der Ihren Site-Hash und Hostnamen übertragen würde) wartet auf die Einwilligung. Vorher zeigt das Plugin das Gratis-Kontingent aus statischem Text. Zusätzlich wird die Zustimmung jetzt serverseitig erzwungen, nicht nur über deaktivierte Schaltflächen.
1.0.4
- Behoben: Der Hinweis vor dem Optimieren rechnete nur mit gekauften Credits und ignorierte die Gratis-Credits — dadurch erschien fälschlich „Sie haben 0 Credits». Jetzt zählen Gratis- und gekaufte Credits zusammen (betrifft Bilder- und Fonts-Tab).
1.0.3
- Geändert: Die Gratis-Kontingent-Anzeige heißt jetzt „Gratis-Credits: X von Y» (vorher „Gratis-Optimierungen … übrig») — konsistent mit dem Credit-Wording.
1.0.2
- Neu: Das Free-Kontingent beträgt jetzt 50 kostenlose Optimierungen pro Domain (vorher 30).
- Behoben: Ein frisch installiertes Plugin zeigte „Credit-Guthaben konnte nicht geladen werden», bis zum ersten Mal optimiert wurde. Jetzt erscheint sofort das Gratis-Kontingent.
1.0.1
- Neu: Haftungsausschluss im Plugin und in der readme ergänzt („wie besehen», ohne Gewähr; Ihre Originale bleiben stets als Fallback erhalten).
1.0.0
- Stable Release.
- Neu: Ihr Free-Kontingent von 50 kostenlosen Optimierungen wird jetzt im Plugin angezeigt — bisher waren dort nur gekaufte Credits sichtbar.
- Neu: Das Free-Kontingent ist jetzt an Ihre Domain gebunden — eine Neuinstallation des Plugins setzt es nicht mehr zurück.
- Bild-, Font- und CSS-Hintergrund-Optimierung sind produktionsreif; der Credit-Kauf ist durchgängig (End-to-End) verifiziert.
0.18.39
- Fix: Nach dem Kauf eines Credit-Pakets landen Sie jetzt wieder direkt im Plugin (mit Erfolgsmeldung) statt auf einer Fehlerseite.
0.18.37
- Verbessert: Die heruntergeladene Assets-ZIP enthält jetzt Datum und Uhrzeit im Dateinamen (z. B.
fepo-optimized-assets-2026-08-04-2305.zip), sodass mehrere Downloads sich nicht gegenseitig überschreiben.
0.18.36
- Fix: Der CSS-Hintergrundbilder-Tab zeigt nach dem Löschen (oder auf einer frischen Installation) wieder „noch nicht gescannt» statt eines veralteten Scan-Ergebnisses — der Scan-Cache wird jetzt beim Löschen und einmalig beim Update bereinigt.
0.18.35
- Fix: Als CSS-Hintergrund optimierte Bilder erscheinen nicht länger im „Bilder»-Tab (weder in der Zählung noch als „Löschen»-Schaltfläche) — sie gehören in den CSS-Hintergrundbilder-Tab.
0.18.34
- Verbesserung: „Optimierte Dateien löschen»-Buttons benennen jetzt den Asset-Typ pro Tab („Optimierte Bilder / Fonts / Hintergrundbilder löschen») und heben sich als Löschaktion durchgängig durch rote Schrift und roten Rahmen ab (zuvor nur beim Überfahren mit der Maus).
0.18.32
- Verbesserung: „Optimierte Dateien löschen»-Buttons an den Stil der übrigen Schaltflächen angepasst (grauer Button, rote Beschriftung).
- Fix: Nach dem Import werden die neu importierten Optimierungen (inkl. „Löschen»-Buttons) zuverlässig sofort angezeigt – auch hinter einem Edge-/Proxy-Cache.
0.18.31
- Fix: Der Button „Optimierte Assets herunterladen (ZIP)» wird jetzt direkt nach einer Optimierung aktiv – ohne die Seite neu laden zu müssen.
0.18.29
- Intern: Datei-Operationen (Verschieben/Löschen optimierter Assets) auf die WordPress-Filesystem-API umgestellt (Plugin-Check-Konformität).
0.18.28
- Neu: Optimierte Dateien lassen sich pro Tab (Bilder, Fonts, CSS-Hintergrundbilder) einzeln löschen — die Originale bleiben unangetastet.
- Neu: Ein zuvor heruntergeladenes ZIP lässt sich wieder importieren und ersetzt den aktuellen Bestand, ohne erneut Credits zu verbrauchen.
- Neu: Domain-Lizenzprüfung beim Import sowie regelmäßig im Hintergrund verhindert, dass optimierte Dateien nach einem Domain-Wechsel oder einer Kopie der Seite weiterverwendet werden.
- Neu: Abschnitt „External services» in der readme.txt dokumentiert, welche Daten dabei an den fepo-Server übertragen werden.
0.18.27
- Verbessert: Die Font-Tabelle erscheint erst nach einem Scan (kein leeres Tabellengerüst mehr) und alle Spalten sind einheitlich linksbündig.
0.18.26
- Neu: Die Font-Ergebnisse erscheinen jetzt als übersichtliche Tabelle (Schriftart, von Google geladene Dateien, geladene Größe, Größe nach dem Subsetting) mit einer Gesamtersparnis-Zeile.
0.18.25
- Neu: Die Font-Liste zeigt jetzt, wie viele Dateien Google pro Schriftfamilie ausliefert — z. B. „4 Dateien von Google geladen (337,7 KB WOFF2)».
0.18.24
- Korrigiert: Die Font-Ergebnisliste zeigt jetzt die echte Downloadgröße (Google-WOFF2) und die optimierte Größe mit Ersparnis in Prozent — statt der internen Master-Datei. Die Liste bleibt nach dem Neuladen der Seite sichtbar.
0.18.23
- Neu: Der Fonts-Tab zeigt jetzt die echte Downloadgröße der Google-Fonts (das, was der Browser lädt) statt der internen Master-Datei — gemessen direkt in Ihrer Installation.
0.18.22
- Fix: Der Button „Optimierte Assets herunterladen (ZIP)» ist jetzt auch dann aktiv, wenn nur Fonts (oder nur CSS-Hintergründe) optimiert wurden — bisher blieb er in diesem Fall ausgegraut, obwohl die optimierten Dateien im ZIP lagen.
0.18.21
- Verbesserung: Das Credit-Guthaben aktualisiert sich jetzt direkt nach einem Optimierungslauf — ohne die Seite neu laden zu müssen.
0.18.20
- Font-Optimierung verbraucht jetzt Credits (1 Familie = 1 Credit); Hinweis bei zu wenig Guthaben vor dem Start.
0.18.19
- Hinweis zur Datenspeicherung korrigiert/präzisiert: Ein einmaliger Credit-Kauf hält Ihre Verbindung dauerhaft aktiv (auch bei 0 verbleibenden Credits). Ohne gekaufte Credits wird eine 60 Tage inaktive Installation automatisch gelöscht (DSGVO-Datenminimierung).
0.18.18
- Neu: Wenn Ihr Guthaben nicht für alle ausgewählten Bilder reicht, weist Sie das Plugin vor dem Start darauf hin, wie viele Bilder jetzt optimiert werden und wie viele für später übrig bleiben — Sie entscheiden dann, ob Sie trotzdem starten.
0.18.17
- Neu: Sehr große Bilder (über 10 MB) werden beim Scan übersprungen und im Ergebnis als „zu groß» ausgewiesen — dafür wird kein Credit verbraucht. Solche Dateien sind fast immer unkomprimierte Originale; bitte komprimieren Sie sie zuerst.
0.18.16
- Verbesserung: Bilder werden jetzt in kleineren Paketen (20 statt 50) verarbeitet. Das macht die Fortschrittsanzeige flüssiger und die Wiederaufnahme nach einer Unterbrechung robuster — ohne die Geschwindigkeit zu verändern.
0.18.15
- Fix: Die deutschen Texte erscheinen jetzt auch, wenn die WordPress-Sprache auf „Deutsch (Sie)» (formelle Anrede) steht — bisher wurde in diesem Fall Englisch angezeigt. Die Übersetzung ist ohnehin durchgängig in der Sie-Form gehalten.
0.18.14
- Intern: Vorbereitung für die Veröffentlichung im WordPress.org-Plugin-Verzeichnis — die Übersetzungen werden künftig automatisch von WordPress geladen (wie bei den übrigen fepo-Plugins). Keine funktionalen Änderungen.
0.18.13
- Neu: Ein kurzer Hinweis zur Datenspeicherung erklärt, wie lange Ihr Zugang bestehen bleibt (mit Guthaben dauerhaft, ohne Guthaben und ohne Nutzung 3 Monate) und dass Ihre optimierten Dateien davon unberührt sind (DSGVO-Transparenz).
0.18.12
- Fix: Die deutsche Übersetzung wird jetzt tatsächlich geladen. In 0.18.11 war die Übersetzung zwar im Paket enthalten, wurde aber nicht angezeigt — WordPress lädt mitgelieferte Übersetzungen nur, wenn das Plugin sie ausdrücklich anfordert. In einer deutschsprachigen Installation erscheint die Oberfläche nun auf Deutsch.
0.18.11
- Neu: Das Plugin ist jetzt auf Deutsch verfügbar. In einer deutschsprachigen WordPress-Installation erscheinen alle Texte automatisch auf Deutsch; in anderen Sprachen bleibt es beim englischen Original. Der Produktname „fepo — Image & Font Optimizer» bleibt unverändert.
0.18.10
- Fix: Der Tab „CSS-Hintergründe» holt seinen Stand jetzt beim Öffnen frisch vom Server. Wer im selben Aufruf zuerst Bilder optimiert und dann in den Tab wechselt, sieht die neuen Zahlen sofort — bisher war dafür ein Neuladen der Seite nötig.
0.18.9
- Fix: Der Tab „CSS-Hintergründe» zeigt den aktuellen Stand jetzt sofort beim Öffnen an. Bisher konnte dort „0 bereits optimiert» stehen, obwohl das Hintergrundbild längst optimiert ausgeliefert wurde — die Anzeige wurde erstellt, bevor der Abgleich mit den optimierten Bildern lief.
- Verbesserung: Das zuletzt ermittelte Ergebnis des Hintergrund-Scans wird gespeichert. Der Tab ist damit nach dem ersten Scan nie wieder leer, und die Zahlen werden bei jedem Aufruf frisch gegen Ihre optimierten Bilder abgeglichen. Ist das Ergebnis älter als eine Stunde, wird im Hintergrund einmal nachgesehen — ohne Wartezeit für Sie.
0.18.8
- Verbesserung: Hintergrundbilder aus Ihrem CSS werden jetzt automatisch mit ausgeliefert, sobald das zugehörige Bild im Bilder-Tab optimiert wurde — ein erneuter Lauf im Tab „CSS-Hintergründe» ist dafür nicht mehr nötig. Bisher blieb ein solches Hintergrundbild unoptimiert, obwohl die AVIF-/WebP-Datei bereits vorlag.
- Hinweis: Einmal muss „CSS-Hintergründe scannen» weiterhin ausgeführt werden, damit das Plugin Ihre Hintergrundbilder überhaupt kennt. Danach genügt das Optimieren im Bilder-Tab. Es entstehen dabei keine zusätzlichen Credits und keine weiteren Umwandlungen — es wird nur auf die bereits vorhandenen Dateien verwiesen. Von Ihnen deaktivierte Hintergrundbilder bleiben deaktiviert.
0.18.7
- Verhaltensänderung: Auf Staging- und Entwicklungsumgebungen ist das Optimieren jetzt gesperrt. Damit verbraucht eine Kopie Ihrer Website (Testsystem, Klon) keine Credits mehr. Maßgeblich ist die WordPress-Umgebungsangabe (
WP_ENVIRONMENT_TYPE): Alles außer „production» ist gesperrt. Wenn Sie dort trotzdem optimieren möchten, tragen Siedefine( 'FEPO_IO_ALLOW_NON_PRODUCTION', true );in Ihre wp-config.php ein. - Fix: Optimierte Dateien, die auf dem Server nicht (mehr) vorhanden sind, werden nicht mehr ausgeliefert. Nach einem Umzug oder dem Einspielen eines Backups konnten dadurch leere Bilder erscheinen; jetzt wird in solchen Fällen automatisch das Originalbild angezeigt.
- Fix: Ein zweiter Klick auf „Optimieren» startet keinen konkurrierenden zweiten Lauf mehr, sondern zeigt den Fortschritt des bereits laufenden an.
- Fix: Nach Abschluss eines Batch-Laufs wird die Scan-Anzeige jetzt zuverlässig zurückgesetzt.
- Verbesserung: Klarere Meldung, wenn die Domain nicht zu dem bei fepo registrierten Zugang passt (etwa nach einem Umzug) — inklusive dem ausdrücklichen Hinweis, den Zugang nicht zu löschen, da Ihre Credits daran hängen.
0.18.6
- Fix: Ein bereits im CSS-Hintergründe-Tab optimiertes Bild wurde im Bilder-Tab-Scan wieder als „zu optimieren» gezählt (z. B. „31 zu optimieren» statt „30 · 1 optimiert») und hätte beim Optimieren einen zweiten Credit gekostet. Der Bilder-Scan erkennt jetzt auch schon-im-CSS-Hintergrund-Modus optimierte Bilder als bereits optimiert (Gegenstück zum umgekehrten Abgleich, den der CSS-Hintergründe-Scan schon macht).
0.18.5
- Aufräumen: Der Code des früheren seitenbasierten Optimize-Modus wurde entfernt (seit der Umstellung auf die Tabs Bilder / Fonts / CSS-Hintergründe ohne Funktion). Keine Verhaltensänderung für die drei aktiven Modi.
0.18.4
- Hinweis: Die „Did You Know?»-Karte weist jetzt auf die weiteren fepo-WordPress-Plugins hin.
0.18.3
- Verbesserung: Nach Abschluss eines Batch-Jobs aktualisiert sich die Scan-Zeile automatisch (zeigt dann „0 zu optimieren · X optimiert» statt des Stands von vor dem Lauf) — ohne manuelles erneutes Scannen.
0.18.2
- Fix: Scan-Ergebnis bleibt jetzt auch während eines laufenden Batch-Jobs erhalten, wenn man die Seite verlässt und zurückkehrt (vorher verschwand die Liste nach dem ersten Batch-Häppchen).
0.18.1
- Fix: Bilder-Tab merkt sich das Scan-Ergebnis über Reloads; ein laufender Batch-Job zeigt seinen Fortschritt nach erneutem Öffnen wieder an (statt leerer Anzeige).
0.18.0
- Batch: Die Batch-Größe (Standard 50) ist jetzt über den Filter
fepo_io_batch_sizeanpassbar — praktisch zum Testen mit kleinen Mengen, ohne den Code zu ändern.
0.17.1
- Batch (intern, Geld-Pfad-Härtung): Ein Batch wird nur als erledigt gezählt, wenn das Speichern ins Manifest wirklich klappt (bei einem Übertragungsfehler wird er automatisch erneut versucht — keine verlorenen Bilder). Zusätzlich ein Mutex, damit JS-Anschieber und WP-Cron denselben Batch nie doppelt starten (kein doppelter Credit-Verbrauch).
0.17.0
- Große Bild-Mengen (> 50) laufen jetzt als Hintergrund-Batch in 50er-Schritten: kein Tab-offen-Zwang mehr, WP-Cron übernimmt weiter, wenn der Tab geschlossen wird. Fortschrittsanzeige „X / Y done», Kauf-Hinweis wenn die Credits für die gesamte Menge nicht reichen, Abschluss-Banner nach Fertigstellung.
0.16.21
- Einheitliche Abschluss-Meldung in allen Tabs (Bilder / Fonts / CSS-Backgrounds): „Done · Y assets optimized · X KB saved».
0.16.20
- CSS-Backgrounds: Nach dem Optimieren aktualisiert sich die Zusammenfassung (found / to optimize / already optimized / skipped) sofort — ohne dass man erneut auf „Scan» klicken muss.
0.16.19
- CSS-Backgrounds: Fix — der Scan las seinen eigenen injizierten Style-Block (das ausgelieferte CSS-Background-Override) als Quelle wieder ein. Weil dessen Selektoren mit „body.fepo» beginnen, wurde ein bereits optimiertes Bild nicht als „already optimized» erkannt. Der Scan lässt die plugin-eigenen Style-Blöcke jetzt aus.
0.16.18
- CSS-Backgrounds: Fix — ein bereits als CSS-Background optimiertes Bild wurde beim erneuten Scan wieder als „to optimize» gezeigt (statt „already optimized») und hätte beim Optimieren einen zweiten Credit gekostet. Der Abgleich erkennt jetzt auch schon-als-CSS-Background optimierte Bilder (über den Selektor), nicht nur die im Bild-Modus optimierten.
0.16.17
- CSS-Backgrounds: Fix — bereits im Bild-Modus optimierte Backgrounds bekamen eine doppelt geprefixte AVIF-URL (…/optimized/images/https://…/optimized/images/…), die 404 lieferte. Die Datei-URL wird jetzt genau einmal gesetzt. Der fehlerhafte Eintrag heilt beim nächsten Scan von selbst.
0.16.16
- CSS-Backgrounds: Der Scan prüft jetzt die Dateigröße (HEAD-Request) und überspringt Bilder unter 10 KB (wie der Bild-Modus) — sie verbrauchen keinen Credit mehr. Bilder ohne ermittelbare Größe werden konservativ übersprungen (im Bild-Modus optimierbar).
0.16.15
- CSS-Backgrounds: Bilder, die bereits im Bild-Modus optimiert wurden und zugleich als CSS-Background dienen, erhalten jetzt beim Scan sofort einen -Override (Wiederverwendung der vorhandenen AVIF/WebP-Dateien, kein zweiter Credit).
0.16.14
- CSS-Backgrounds: «Optimize CSS backgrounds»-Button optimiert jetzt tatsächlich (start poll finalize), site-weiter Manifest-Pool wie bei Fonts.
0.16.13
- CSS-Backgrounds: gefundene Hintergrundbilder werden mit den bereits optimierten Media-Library-Bildern abgeglichen — schon optimierte werden wiederverwendet (kein doppelter Credit). Scan zeigt jetzt «X to optimize / Y already optimized».
0.16.12
- Intern: CSS-Background-Scan erfasst jetzt Selektor + Media-Query (Klammern-Tiefe-Parser) — Vorbereitung fuer die crawl-freie CSS-Background-Optimierung.
0.16.11
- Neu: On/Off-Schalter pro Tab (Bilder/Fonts/CSS-Backgrounds). «Aus» pausiert nur die Auslieferung — die optimierten Dateien bleiben auf dem Server und können weiter als ZIP heruntergeladen werden. «An» reaktiviert sofort.
0.16.10
- Performance: Das in die Seite injizierte Rewrite-Script wird minifiziert ausgeliefert (6.6 2.7 KB). Lesbare Source bleibt im Plugin.
0.16.9
- Fix: Nach dem Font-Optimieren verschwindet die veraltete Scan-Warnung («… loaded from Google …») — die Fonts werden ja jetzt lokal ausgeliefert.
0.16.8
- Neu: «Optimize CSS backgrounds»-Button im CSS-Background-Tab (wird nach dem Scan aktiv). Optimier-Funktion folgt.
0.16.7
- Konsistenz: Fonts-Tab wie Images/CSS-Background — Ergebnis über den Buttons, «Scanning…»-Status darunter.
- Konsistenz: Im Fonts-Tab stehen «Scan/Optimize fonts» jetzt UNTER dem Ergebnis (wie Images- und CSS-Background-Tab).
0.16.5
- Fix: „CSS Background-Images»-Tab — Scan-Button, Warning behoben, Download/Tipp global unter allen Tabs; Scan erfasst auch Page-Builder-CSS (uploads/, z.B. Elementor).
0.16.4
- Neu: Tab „CSS Background-Images» (vorher „Pages») mit crawl-freiem „Scan CSS backgrounds» — findet background-image/background url()-Rasterbilder (JPG/PNG) durch Scan des Theme-CSS (verlinkte Stylesheets + Inline-Styles + registrierte Stylesheets), ohne die Seite zu crawlen. Nur das eigene Theme wird gescannt; Plugin- und WordPress-Core-CSS werden bewusst ausgelassen (fepo fasst diese Assets nicht an).
0.16.3
- Verbessert: Intro- und Credit-Karte zu einer Karte zusammengefasst; Guthaben zeigt jetzt «You have left: X credits» mit einem «Add Credits»-Button daneben.
- Verbessert: Credit-Hinweis präzisiert («1 asset (image or font) = 1 credit»); der CDN-Tipp sitzt jetzt beim Guthaben.
0.16.2
- Neu: Credit-Karte im Adminbereich zeigt Ihr Paid-Credit-Guthaben und bietet Kauf-Packs an, sobald diese konfiguriert sind.
- Neu: Wird eine Optimierung mangels Guthaben abgelehnt (Kontingent erschöpft oder Paid-only-Feature), zeigt das Plugin jetzt eine Upgrade-Box mit Kauf-Button statt nur einer Fehlermeldung.
0.16.1
- Neu: Fonts-Tab zeigt nach dem Optimieren eine Detail-Liste je Font (Original optimierte Größe, gesparte KB) inkl. übersprungener Fonts mit Grund.
- Neu: Lade-Spinner während „Optimizing…» im Fonts-Tab.
- Fix (Server): umbenannte Google-Fonts (z. B. „Source Sans Pro» „Source Sans 3″) werden jetzt gefunden und subsettet statt übersprungen.
0.16.0
- Neu: Fonts-Tab „Optimize fonts» — Google-Fonts werden serverseitig auf Latin-Ext subsettet, lokal gehostet und der Google-Link bei der Auslieferung entfernt (DSGVO).
0.15.2
- Clearer Fonts-tab wording: fepo subsets the Google Fonts (smaller files) and serves them from your own server — not just «self-hosting».
0.15.1
- The Fonts tab now lists only Google Fonts — the ones that leak visitor IPs and that fepo can self-host for you. Fonts you already serve locally (including icon fonts like Font Awesome) are no longer shown as noise.
0.15.0
- New «Fonts» tab: scans your CSS (no crawl) and shows which web fonts your site uses and where they load from — flagging Google Fonts that send visitor IPs to Google. (Optimising them comes next.)
0.14.3
- The «Download optimized assets (ZIP)» button now works across both tabs and is available whenever any images or pages have been optimised — handy for keeping a copy before uninstalling.
0.14.2
- While an optimization run is in progress, all action buttons across both tabs are now disabled so a second run can’t be started by accident. The «Optimizing…» status now shows a spinner.
0.14.1
- The skipped-images list is now styled to match the rest of the panel (framed, clearer group headings) instead of the plain browser default.
0.14.0
- The image scan now lists every image in your Media Library and explains skipped ones by reason — already-modern (WebP/AVIF), vector (SVG), too small, or other formats. Nothing hidden anymore.
0.13.3
- The Optimize action now skips images that are already optimized, so it no longer re-submits finished images — this prevents a false «limit reached» when the scan still shows images left to optimize. When everything is already done, a neutral note is shown instead of an error.
0.13.2
- Image scan now reports already-optimised images as their own «optimized» category instead of counting them again as «to optimize». Matches by URL path (www/non-www safe).
0.13.1
- Improved: Image mode UI cleaned up — general notes moved above the tabs, «Did you know?» is now its own card. Clearer scan summary (names the optimized formats) plus the real savings shown after the run.
0.13.0
- New: Image mode — optimizes the entire Media Library (WooCommerce product images including rotating related products), independent of individual pages. Images are converted to WebP/AVIF and served across all pages.
0.12.1
- loading=»lazy» / fetchpriority=»high» jetzt nach DOM-Position statt nach gemessener Pixel-Höhe: zweites Bild der Seite bekommt fetchpriority=»high» (LCP), ab dem dritten loading=»lazy». Robuster auf Mobile, keine Messung nötig.
0.12.0
- New: Below-the-fold images now get loading=»lazy» so they load only when scrolled into view — the above-the-fold/LCP image is never lazy-loaded (measured position, fetchpriority-safe).
0.11.0
- New: Images loaded by JavaScript (e.g. WooCommerce block-based related products, sliders, lightboxes) are now rewritten to the optimized AVIF/WebP in the browser — coverage that server-side HTML rewriting cannot reach.
0.10.18
- Improved: Product-gallery and related-product images (loaded via srcset on mobile) now use the optimized AVIF/WebP instead of the full-size original JPEG.
0.10.17
- Fix: WooCommerce product-zoom now loads the optimized WebP (the zoom reads data-src, which is now rewritten too).
0.10.16
- Improved: JavaScript-loaded zoom/lightbox images (e.g. WooCommerce product zoom) now use the optimized WebP instead of the original JPEG.
0.10.15
- Fix: Page-builder header/footer templates and other non-page items (e.g. Elementor Header & Footer Builder, media, forms) no longer appear in the list — now filtered generically, not just by name.
0.10.14
- Fix: On WooCommerce sites, each product now optimizes its own page correctly — a regression in 0.10.13 caused all products to share one entry (and pull the wrong page’s images).
0.10.13
- Fix: Page-builder template parts (Elementor templates/kits, block templates, etc.) no longer appear in the page list — only real, optimizable pages are shown.
- Improved: WooCommerce products are now sorted by best-sellers using the official WooCommerce API.
0.10.12
- New: The page list now includes all public content types — WooCommerce products & product categories, plus any custom post types — so you can optimize them too (not just pages and blog posts).
0.10.11
- New: Notice when a page was analyzed via the fallback crawler (your server blocked fepo) — with a link explaining how to allow fepo for faster, more complete optimization.
0.10.10
- Kleiner UI-Feinschliff: die „Did you know?»-Karte hat jetzt einen dezenten Rahmen
(statt Schatten) — konsistent zum „Was wird optimiert»-Block.
0.10.9
- „Did you know?»-Tipps zeigen keine Quellenangabe mehr — schlanker, die Aussagen
stehen für sich.
0.10.8
- Neue „Did you know?»-Karte unter den Buttons mit rotierenden Performance- und
Optimierungs-Tipps (alle paar Sekunden ein neuer; respektiert reduced-motion).
0.10.7
- „Download optimized assets (ZIP)» und „Undo optimizations» sind jetzt deaktiviert,
solange noch nichts optimiert wurde (es gibt dann nichts zu herunterladen/rückgängig). - Kleiner UI-Feinschliff: der „Was wird optimiert»-Hinweis hat jetzt einen dezenten Rahmen.
0.10.6
- Fix: Eine bereits optimierte Seite erneut optimieren zeigte „Download failed“, obwohl
alles in Ordnung war (es gab schlicht nichts Neues zu optimieren). Jetzt wird das als
erfolgreicher Lauf angezeigt — die bestehende Optimierung bleibt erhalten.
0.10.5
- Neuer Admin-Hinweis «Was wird optimiert — und was nicht» (aufklappbar): Größen-Schwellen
(Bilder ab 10 KB, Fonts ab 50 KB), bereits optimale Formate (AVIF/SVG bleiben unberührt),
nur eigene Domain, Originale als Fallback. - readme/Beschreibung auf den aktuellen Stand gebracht (CSS-Backgrounds als AVIF, echtes
Font-Ersetzen + Google-Fonts-Entfernung — war veraltet als «noch nicht» beschrieben).
0.10.4
- Plugin-Check: translators-Kommentar für die Total-Vorlage ergänzt (Internationalisierung).
0.10.3
- Fix: Einzelne Fonts ließen sich in der Detail-Liste nicht abwählen (interner
Schlüssel-Fehler) — jetzt per Font-Familie schaltbar wie Bilder. - Die «Total»-Ersparnis aktualisiert sich jetzt sofort, wenn ein Asset ab- oder
zugewählt wird (zählt nur noch die aktiven Assets).
0.10.2
- Fix: Beim Optimieren mehrerer Seiten wurde die zweite Seite manchmal als «Skipped»
übersprungen, obwohl Kontingent frei war (ein vorheriger Lauf war gerade fertig, aber
der Server-Slot noch belegt). Das Plugin wartet jetzt kurz und versucht es erneut,
statt sofort abzubrechen. «Skipped» erscheint nur noch bei wirklich erschöpftem Kontingent.
0.10.1
- Fix: literales «$1» vor dem @font-face-Block entfernt (preg_replace-Backreference).
- Auch dns-prefetch/preconnect-Hints auf fonts.googleapis.com/gstatic.com werden entfernt,
wenn Fonts lokal ausgeliefert werden — kein Google-Kontakt mehr.
0.10.0
- Fonts werden jetzt wirklich ersetzt: Google-Fonts-Links werden entfernt, subsetted Fonts
per @font-face injiziert. DSGVO-Leak (IP an Google) damit geschlossen.
0.9.6
- Deutlicherer Pfeil (➔) in der Ersparnis-Anzeige statt des dünnen (war mit — verwechselbar).
0.9.5
- «Undo optimizations» lädt die Seite neu (Detail-Zeilen, Schalter, Total
verschwinden sauber). Total zeigt «(−X% saved)».
0.9.4
- «Undo optimizations» setzt jetzt alle Auswahl-Checkboxen zurück.
0.9.3
- CSS-Background-Eintrag in der Liste klarer beschriftet: «(CSS background image)» statt
des kryptischen langen Selektors.
0.9.2
- CSS-Background: body.fepo wird vor JEDEN Teil einer komma-getrennten Selektor-
Gruppe gesetzt (vorher nur der erste Rest verlor die Spezifität).
0.9.1
- Plugin-Check: $_POST[enabled] im Asset-Switch sanitized (ValidatedSanitizedInput).
0.9.0
- CSS-Background-Bilder werden als AVIF ausgeliefert (additiv per Style-Block, kein CSS-Eingriff); pro Background ein An/Aus-Schalter.
0.8.0
- Asset-Switch: einzelne optimierte Bilder/Fonts pro Seite an/aus schalten
(Schalter in der Detail-Liste). Aus = Original wird ausgeliefert; reversibel, nichts
wird gelöscht. Überlebt Re-Optimierung.
0.7.1
- decoding=»async» wird an optimierten Bildern ergänzt (asynchrones Dekodieren,
blockiert das Rendering nicht) — nur wo noch kein decoding gesetzt ist.
0.7.0
- Mehr Erklärtext im Admin (was das Plugin macht) + CDN-Tipp mit Link zu YouTube-Guides.
- Total-Zeile vereinfacht: «Total: X Y (−Z%)» (ohne redundantes «saved»).
0.6.6
- Gesamt-Ersparnis konsistent zum Datei-Format: «Total: 3.6 MB 1.1 MB (−70%, 2.5 MB saved)».
0.6.5
- Gesamt-Ersparnis unter der Tabelle: «Total saved: X MB (−Y%)» über alle Seiten.
0.6.4
- Quota-Zeile aus dem Admin entfernt (Seiten-Quota war nur Platzhalter).
0.6.3
- Zeilen-Checkbox vertikal sauber (margin-top entfernt).
0.6.2
- Header-Checkbox feiner ausgerichtet.
0.6.1
- Optimierte Seiten: dezent grüner Zeilen-Hintergrund (auf einen Blick erkennbar).
0.6.0
- Eigenes Consent-Gate (DSGVO Art. 7): Einwilligung zur Datenübertragung an fepo,
bevor optimiert werden kann — mit Datenschutz-Link, nachweisbar gespeichert
(Timestamp + Text-Hash). Macht das Plugin eigenständig (vorher auf fepo-audit angewiesen).
0.5.3
- Datei-Ersparnis zeigt jetzt das Zielformat: «46 KB 19.8 KB · AVIF (−57%)»,
Fonts mit WOFF2.
0.5.2
- Checkbox-Spalte kompakter.
0.5.1
- Sanfte Übergänge: Status-Vierecke (Farbwechsel) + Overlay (Einblenden) 0.333s.
Tabelle: Scrollbar immer sichtbar (kein Layout-Sprung).
0.5.0
- Datei-Ersparnis klarer: «Original Optimiert (−%)» statt nur der gesparten KB
(z.B. 744 KB 23 KB (−97%)). Große Werte als MB.
0.4.9
- Plugin-Check: tr-class über esc_attr ausgegeben (Escaping).
0.4.8
- Status-Spalte als farbiges Viereck: grün (optimiert, klickbar für Details +/−),
rot bei Fehler (Tooltip mit Meldung). Fehlgeschlagene Läufe werden pro Seite gemerkt.
0.4.7
- Detail-Aufklapper zeigt pro optimierter Datei die Ersparnis (Dateiname — % · KB).
- Bilder unter 10 KB werden nicht mehr optimiert (lohnt nicht).
0.4.6
- Optimierte Seiten in der Liste hervorgehoben (Seitenname fett + grün).
0.4.5
- Fix: Optimizing-Overlay war IMMER sichtbar (CSS display:flex überschrieb das
hidden-Attribut). Jetzt korrekt nur während der Optimierung. Das war die
eigentliche Ursache der blockierten Tabelle.
0.4.4
- Fix: Overlay blieb hängen, wenn ein Run in der Warteliste dem Backend nicht
mehr bekannt war (404). Solche Einträge werden jetzt entfernt statt ewig behalten.
0.4.3
- Beim Deaktivieren/Löschen des Plugins werden wartende Optimierungs-Läufe im
fepo-Backend sofort abgebrochen (keine sinnlose Queue-Arbeit mehr).
0.4.2
- Fix: Overlay erschien sofort beim Seitenaufruf (alte/erledigte Runs in der
Pending-Liste). Jetzt wird die Liste VOR dem Anzeigen aufgeräumt — Overlay nur
bei wirklich laufendem Lauf.
0.4.1
- Plugin-Check sauber: translators-Kommentare, Datei-Operationen über WP_Filesystem
(Download + uninstall), präfixierte Variablen in uninstall.
0.4.0
- Optimizing-Overlay: während der Optimierung legt sich ein Spinner-Overlay
«Optimizing…» über die Tabelle, Buttons sind gesperrt. Erscheint auch beim
Zurückkehren auf die Seite, wenn noch ein Lauf offen ist (Tab verlassen + zurück). - Seitentabelle: max. ~10 Zeilen sichtbar, dann scrollbar (Sticky-Header).
0.3.6
- Detail-Zeile zeigt «(N new)» jetzt immer — auch «(0 new)» bei Re-Runs ohne
Änderung (zeigt: Lauf erfolgt, nichts Neues optimiert).
0.3.5
- Re-Optimieren verschlechtert das Manifest nicht mehr: sieht ein erneuter Lauf
durch Timing/Lazy-Load weniger Assets, bleiben die bereits optimierten erhalten
(Merge statt Überschreiben). Verhindert verschwundene bei Re-Runs.
0.3.4
- Nach dem Optimieren lädt die Seite neu (Status + Detail-Aufklapper erscheinen).
Detail-Zeile: «x fonts (a new), y images (b new)» — Änderung jetzt pro Asset-Typ.
0.3.3
- Status-Spalte: + zum Aufklappen pro optimierter Seite (Detail-Zeile mit
«Last optimized: Datum/Uhrzeit — x Fonts, y Bilder» + Änderung). Zebra-Streifen.
0.3.2
- Status-Spalte klarer: zeigt Datum + «X Bilder, Y Fonts» (statt verwirrendem
new/replaced/removed) und ist breiter. Visueller Feinschliff folgt.
0.3.1
- Plugin-Version im Admin angezeigt (wie die anderen fepo-Plugins). Beim Löschen
des Plugins werden jetzt die eigenen Dateien (uploads/fepo/optimized/, manifest.json)- Optionen aufgeräumt — geteilte fepo-Daten bleiben unangetastet.
0.3.0
- Robuster Abschluss: optimierte Assets werden auch dann übernommen, wenn die
Plugin-Seite während der Optimierung verlassen wird (WP-Cron + beim Öffnen). - Status-Anzeige: «Zuletzt optimiert» + pro Seite Datum + Änderungs-Diff
(neu/ersetzt/entfernt). Download-Button für die optimierten Assets (ZIP).
0.2.4
- «Reset all» umbenannt in «Undo optimizations» (klarer) + Bestätigungsdialog.
0.2.3
- Nonce-Prüfung (check_ajax_referer) inline in jeden AJAX-Handler — Plugin-Check
erkennt sie jetzt. Kürzere optimierte Font-Dateinamen (Family..woff2).
Versionsangaben (Header/Stable tag) synchronisiert.
0.2.2
- Plugin-Check-Konformität: i18n-Platzhalter geordnet, Doku der bekannten Grenzen
(Fonts werden vorerst nur vorgeladen, nicht ersetzt; CSS-Hintergründe/JS-Bilder/
Hintergrund-Videos werden nicht optimiert).
0.2.1
- Free-Kontingent ist jetzt ein Gesamt-Limit (3 Seiten total) statt monatlich — wie beim Audit.
Paid-Pläne bleiben monatlich. Vorab-Prüfung: bei mehr gewählten Seiten als Kontingent warnt
das Plugin und optimiert nur die erlaubte Anzahl (statt mitten im Lauf zu scheitern).
0.2.0
- Optimierungs-Flow funktionsfähig: Slim-Run starten, Status pollen bis fertig,
optimierte Assets laden + entpacken (WP-natives unzip_file, PHP-7.4-sicher),
Manifest mit echtem Mapping schreiben. Output-Filter rendert + Font-Preload.
0.1.0
- Skeleton: plugin structure, hooks, class stubs. No optimisation logic yet.
