Troubleshooting
Common issues and how to resolve them.
Consent Box Not Appearing
The consent dialog doesn't show up on the frontend.
- Plugin not enabled — Go to System > Manage > Plugins and verify the plugin status is Enabled
- Consent cookie already set — Clear your browser cookies (specifically
sly-consent) and reload. If you've previously accepted or declined, the dialog won't appear again until the cookie expires - No YouTube code detected — The plugin only shows the consent box when it detects video code. If your page has no embed the built-in patterns match and no Custom Regex Pattern, the plugin does nothing. Enable Debug Mode and log in on the front end as a Super User to see which patterns matched
- Geo-detection filtering you out — If geo-detection is enabled and your browser language is not EU/EEA/UK, the dialog may be skipped. Temporarily disable geo-detection to test
- Admin pages excluded — The plugin only runs on front-end HTML pages; it never shows the consent dialog in the administrator
- Demo mode on another page — While demo mode is on with Show on Page set, the plugin does nothing on all other pages. Turn demo mode off on a live site
- Caching — If your site uses page caching, the cached version may not include the consent box. Clear Joomla cache and any third-party cache (CDN, server-side)
Videos Still Appear After Declining
The visitor clicked Decline but videos still show on the page.
- Page was cached before the decline — Clear your browser and server cache, then reload. The next render will strip videos
- Custom video widget not detected — The plugin only strips what its patterns match. If your video comes from an extension the built-ins don't cover, enable Debug Mode to confirm coverage. If nothing matches, add a Custom Regex Pattern in the plugin's Expert Mode tab
- Video loaded via inline JS that isn't in the HTML — If a script dynamically injects the player into the DOM after page load, the server-side HTML may be clean but the browser renders the video anyway. Either block the loader script with a Custom Regex Pattern or move video initialization into markup the built-ins can match
Videos Not Loading After Accept
Visitors click Accept but videos don't appear.
- Cookie not actually set — Check the browser's developer tools cookies panel for
sly-consent. If it's missing, the POST may have failed. Verify the form's CSRF token isn't stripped by a reverse proxy - Page was cached without the consent cookie — Clear caches and reload. Pages cached for non-consented visitors won't include the original video code
- HTTPS mismatch — The
Secureflag is set when Force HTTPS is Entire Site. If pages are still reachable over plain HTTP, the cookie is not sent there. Serve the whole site over HTTPS - Custom cookie path — If you set a Cookie Path in Joomla's Global Configuration, the consent applies only below that path. Leave it empty to cover the whole site
- Third-party browser extension blocking — Privacy extensions (uBlock, Privacy Badger) may block YouTube independently. Test in a browser with no extensions
Placeholder Image Problems
The inline placeholder shows the wrong image, or no image.
- Position mismatch — Placeholder images only apply to Inline (replace video) (position 5). Overlay positions 1–4 don't use them. Check Consent Box Position
- Per-video ID doesn't match — In Per-video custom images mode each row needs the video's 11-character ID, or a YouTube URL it can be read from (
watch?v=,youtu.be/,/embed/,/shorts/,/live/). Rows whose ID cannot be recognised are ignored, and videos without a matching row fall back to the generic icon - Custom image path wrong — In Single custom image mode, confirm the media field points to an image that exists and is web-accessible
- No play button — The play button is drawn over an image only; in Icon only (privacy-safe) mode it is not shown
- YouTube thumbnail blocked — In YouTube thumbnail mode the poster is fetched from
img.youtube.com. If a privacy extension or your own CSP blocks that domain, the image won't load. Switch to a self-hosted mode if you need guaranteed delivery
Expert Regex Pattern Problems
The Expert pattern isn't matching, or it's breaking the page.
- Missing delimiters — PHP regex requires
/(or another delimiter) at start and end:/<div class="custom-video">.*?<\/div>/is. Paste the full/pattern/flagsform - Unescaped special characters — Escape forward slashes in URLs (
\/), dots (\.), and other regex metacharacters - Missing
isflags — Always includeis— case-insensitive (i) and dotall (s) so.matches newlines inside multi-line HTML blocks - Pattern too greedy — Use
.*?(non-greedy) instead of.*to stop at the first closing tag, otherwise one match can swallow the rest of the document - Pattern silently failing — Enable Debug Mode (visible to logged-in Super Users); if the custom pattern shows zero matches, the regex isn't finding your element. Copy the actual HTML from the page source and build the pattern against it
Custom Colors Not Applying
Custom theme colors don't appear on the frontend.
- Theme not set to Custom colors — The color pickers only take effect when the Color Theme is set to Custom colors
- Dark mode mismatch — If you're testing in dark mode but only set light colors (or vice versa), the colors won't apply. Set both light and dark custom colors when dark mode is Auto or Always dark
- Browser cache — Hard-refresh the page (Ctrl+Shift+R) to bypass cached CSS
- CSS specificity — If your template's CSS overrides the consent box, you may need more specific selectors. The plugin uses CSS custom properties (variables) which can be overridden by your template
Geo-Detection Issues
Geo-detection isn't working as expected.
- Browser language vs location — Geo-detection uses browser language preferences, not IP geolocation. A visitor with a German browser in the US will be detected as EU. This is by design
- English browsers — The bare language code
endoes not trigger consent (to avoid flaggingen-usvisitors). Onlyen-gbanden-ietrigger consent when the UK region is enabled - Test with browser settings — To test, change your browser's Accept-Language preferences to a language from a consent-required region (e.g.,
de,fr,it) - Norwegian browsers —
nbandnn(Bokmål and Nynorsk) count as EEA, likeno - Missing Accept-Language header — If the header is missing (some bots, API clients), the plugin shows the consent dialog as a safe default
Installation Refused
The installer stops with "Smart Local Youtube requires PHP … or later" or "requires Joomla … or later".
- PHP too old — The plugin needs PHP 8.1 or higher. Change the PHP version in your hosting control panel, then install again
- Joomla too old — The plugin needs Joomla 4.4 or later. Update Joomla first (System > Update > Joomla), then install again
- Nothing was changed — The check runs before any file is copied, so your site keeps working while you fix the requirement
Joomla Update System
Updates are not found or downloads fail.
- Plugin must be enabled — The plugin identifies your site to the update server via the
site_urlparameter. If the plugin is disabled, this parameter is not sent and downloads will fail with "Failed to download package". Go to System > Manage > Plugins and make sure the plugin is Enabled - Download key — If your update server requires a download key, enter it in System > Update > Update Sites. Click the update site name and add the key. The plugin appends
site_urlalongside the download key automatically - Server unreachable — Ensure your server can reach the update server URL. Some hosting providers block outbound HTTP connections
Plugin Conflicts
The plugin conflicts with another extension.
- Duplicate consent managers — If another extension also manages YouTube consent, disable one of them. Running two consent managers will cause conflicts or double dialogs
- JavaScript errors — Open the browser console (F12) and check for JavaScript errors. A JS error from another extension may prevent the consent form submission from firing
- Plugin ordering — In System > Manage > Plugins, check the plugin ordering. Smart Local Youtube should generally run after template-related plugins but before caching plugins so it can see the fully-rendered HTML