SheetMirror for Google Sheets
SheetMirror embeds a live Google Sheets spreadsheet into any WordPress post or page using a simple shortcode. Unlike basic CSV importers, SheetMirror can connect to the Google Sheets API v4 to retrieve not just your data, but the full visual formatting of every cell – giving your readers a table that looks exactly like the one you designed in Google Sheets. Why SheetMirror ? Spreadsheet data on the web is often reduced to a bland, unstyled grid. The formatting you spent time on – the bold headers, the colour-coded rows, the carefully aligned columns – disappears entirely. SheetMirror solves this by faithfully translating your Google Sheets formatting into standard HTML and inline CSS, so the table your readers see on your site is a true reflection of the original. Two Fetch Modes API Mode (recommended) Uses the Google Sheets API v4 to retrieve both cell values and full formatting metadata. A Google Cloud API key is required. This is the mode that enables all the rich formatting features described below. CSV Mode (no API key needed) Fetches data via Google’s public CSV export URL. No API key or account is required – just share your sheet as “Anyone with the link can view.” Cell values are displayed in a clean, readable table, without formatting. Ideal for simple data tables where styling is not a priority. Formatting Reproduced via the API When API Mode is enabled, SheetMirror retrieves and applies the following formatting properties from your spreadsheet: Horizontal alignment – Left, Centre, Right, and Justify, applied per cell. Vertical alignment – Top, Middle, and Bottom. Text decoration Bold ( ), italic ( ), underline ( ), and strikethrough ( ), each rendered using the appropriate semantic HTML element. Font family – The typeface specified in the spreadsheet is passed through as a CSS font-family value. Font size – Rendered as pt values, matching the size as set in Google Sheets. Font colour – Foreground text colour is reproduced as a CSS color value. Cell background colour – Background fill colours are rendered as CSS background-color values. The default white background and black text are always output explicitly so that theme styles cannot bleed through. Merged cells – Merge regions are faithfully reproduced using HTML rowspan and colspan attributes. Cell borders – Per-cell border styles (solid, dashed, dotted, double) and weights (1 px, 2 px, 3 px) are applied as individual CSS border-{side} declarations. Text wrap strategy – Wrap and Clip modes are translated to the appropriate CSS white-space and overflow rules. The Overflow mode (where content spills into adjacent cells) is a layout behaviour specific to Google Sheets and cannot be reproduced in an HTML table. Text direction – Right-to-left text is reproduced with the CSS direction: rtl property. Hyperlinks – Both cell-level hyperlinks and links set via the Google Sheets link format are rendered as tags with target=”_blank” rel=”noopener noreferrer”. Column widths – Each column’s pixel width is retrieved from the spreadsheet and applied via elements, reproducing the exact column proportions of the original. Active when the “Auto-fit columns” option is off (the default). Row heights – Each row’s pixel height is retrieved and applied as an inline height style on the element, preserving the vertical spacing of the original spreadsheet. Active when the “Auto-fit columns” option is off (the default). Hidden rows and columns – Rows and columns that are hidden in the spreadsheet (whether hidden manually or by a filter) are omitted from the rendered table entirely. Available in API mode only. Mixed format – Cells containing mixed formatting within a single cell (rich text) are fully supported in API mode. Font size, font family, style, and colour can all vary within a single cell; each run is rendered as an individual with its own styles applied. Table Display Options Each registered table can be configured independently with the following options: Use Google Sheets API – Toggle between API Mode (full formatting) and CSV Mode (values only). Shrink to fit – Available in API + fixed-width mode only. When enabled, the table is automatically scaled down in the browser to fit the available container width. Inline px and pt values are rewritten directly – the same arithmetic as the scale shortcode attribute – so theme styles, borders, and background colours are unaffected. Mutually exclusive with “Auto-fit columns”. Auto-fit columns – When off (default), column widths are taken directly from the spreadsheet’s pixel dimensions via the API, reproducing the layout as designed in Google Sheets. When on, each column shrinks to fit its content (table-layout: auto). Mutually exclusive with “Shrink to fit”. Treat first row as header – Renders the first row inside a element using cells with scope="col", improving accessibility and allowing header-specific styling. Available in CSV mode only. Borderless – Hides all cell borders for a cleaner, minimal presentation. When off, a standard 1 px grid is shown as a fallback, with per-cell API borders taking priority where available. Available in CSV mode only. Caching All API and CSV responses are cached using WordPress transients for 5 minutes, keeping your page loads fast and your API quota usage low. A “Clear Cache” button is available for every registered table so you can force a refresh immediately after updating your spreadsheet. Shortcode Usage After registering a table in Settings → SheetMirror, embed it anywhere using its tag name as a shortcode: [your_tag_name] For example, if you registered a table with the tag sales_2026, place [sales_2026] in any post, page, or widget area. Scaling the table An optional scale attribute lets you render the table at a percentage of its original size. Accepted values are integers between “10” and “200”. [sales_2026 scale="50"] The scaling is applied via the CSS font-size property on the wrapper element (and, in fixed-width API mode, by multiplying each column width and row height by the scale factor). Table alignment An optional align attribute lets you control the horizontal alignment of the table within its container. Accepted values are “left”, “center”, and “right”. [sales_2026 align="left"] The align attribute can also be combined with the scale option: [sales_2026 align="center" scale="80"] If the attribute is omitted, the table will follow the default alignment defined by your theme or container styles. Requirements A Google Sheets spreadsheet shared as “Anyone with the link can view.” For API Mode: a Google Cloud API key with the Google Sheets API enabled. External Services This plugin connects to external services operated by Google. Depending on the fetch mode you choose, one or both of the following connections will be made. Google Sheets API v4 (API Mode) When API Mode is enabled, this plugin sends requests to the Google Sheets API v4 to retrieve cell values and formatting metadata from your spreadsheet. Service: Google Sheets API v4, provided by Google LLC. Data sent: The Spreadsheet ID and cell range you registered, together with your Google Cloud API key. No personal data of your site’s visitors is transmitted. When: Every time a page containing the shortcode is loaded and no valid cached response exists (cache duration: 5 minutes). A request is also made when you use the connection-test button in the settings page. Terms of Service: https://developers.google.com/terms Privacy Policy: https://policies.google.com/privacy Google Sheets CSV Export (CSV Mode) When CSV Mode is enabled, this plugin fetches data from Google’s public CSV export URL for your spreadsheet. Service: Google Sheets public CSV export (/export?format=csv), provided by Google LLC. Data sent: The Spreadsheet ID and numeric sheet identifier (gid). No API key or visitor data is transmitted. When: Every time a page containing the shortcode is loaded and no valid cached response exists (cache duration: 5 minutes). Terms of Service: https://policies.google.com/terms Privacy Policy: https://policies.google.com/privacy Google Sheets Sheet List (CSV Mode – sheet name resolution) When CSV Mode is enabled and a sheet name is specified in the cell range, this plugin fetches the spreadsheet’s HTML view page in order to resolve the sheet name to its numeric identifier (gid). This request is made once per spreadsheet and the result is cached together with the table data. Service: Google Sheets HTML view page (/htmlview), provided by Google LLC. Data sent: The Spreadsheet ID only. No API key or visitor data is transmitted. When: On the first load of a page containing a CSV Mode shortcode that specifies a sheet name, when no valid cached response exists. Not used when a gid is available directly from the registered URL, or when API Mode is enabled. Terms of Service: https://policies.google.com/terms Privacy Policy: https://policies.google.com/privacy Donate If you find this plugin useful and would like to support its development, you can make a voluntary donation via PayPal. Your support helps keep this plugin maintained and improved. Thank you! PayPal: https://www.paypal.me/Kasuga16
Smush – Image Optimization, Compression, Lazy Load, WebP & CDN
Compress images, optimize images, and enable image lazy load automatically with the powerful Smush image optimizer to keep your WordPress site fast, without losing quality. Smush makes it easy to optimize images, compress images, and deliver images faster across your entire WordPress site. This all-in-one image optimizer automatically reduces image file sizes, enables image lazy load, and serves modern formats like WebP and AVIF, all without breaking image quality or adding extra work. Whether you’re running a blog, store, or portfolio, Smush helps you optimize images at scale and keep your site fast with a trusted WordPress image optimizer. Trusted by 1+ Million Sites | 4.8/5 Star Rating Get everything you need to optimize images and speed up your site. Smush works out of the box with no complicated setup – just install and let it handle the rest. Compress images without losing quality Reduce image file size automatically while keeping your images sharp and clear. Smush is an easy-to-use image optimizer which let’s you compress images using both lossless and lossy compression, giving you the best balance of quality and performance without extra work. You can also compress images outside the media library using Directory Smush, making it easy to optimize images stored in theme folders, plugins, or other directories on your server. Lazy load images for faster pages Enable image lazy load across your site so images load only when needed. This image optimizer improves initial page speed and creates a smoother experience for visitors without extra configuration. Serve WebP and AVIF images automatically (PRO) Convert images to WebP and AVIF and serve them automatically to supported browsers. Smush helps you optimize images using next-gen formats to reduce file size and improve load times across your WordPress site. Deliver images faster with an Image CDN (PRO) Serve images through a global image CDN to reduce latency and improve load times for visitors around the world. 119 global CDN servers Up to 500 GB of bandwidth Faster image delivery based on visitor location Improved performance for image-heavy and high-traffic sites Automatically resize and fix image dimensions (PRO) Eliminate common PageSpeed warnings and improve layout stability with automatic image sizing. Smush dynamically resizes images to perfectly fit their containers, regardless of original size, helping fix the “Properly size images” warning in Google PageSpeed Insights. It also automatically adds missing width and height attributes to your images, improving rendering speed and reducing layout shifts. This helps you meet the “Ensure images have explicit width and height” recommendation without any manual work. Optimize your entire site, automatically Smush works across your whole site as a powerful image optimizer to optimize images as you upload them and maintain performance over time without manual work. Optimize images automatically on upload Compress images in bulk or individually Works with your existing media library No need to re-upload images Enable image lazy load across your site Convert images to WebP and AVIF Deliver images with an integrated image CDN Automatically resize and serve correctly sized images Optimize images outside the media library with Directory Smush Built for performance Smush improves page speed and overall performance by reducing image weight and improving how images are delivered. Reduce page load times Improve user experience Better performance for image-heavy pages Supports image lazy load and preload images (PRO) for faster perceived performance Works with your existing setup Smush is built to work with your current WordPress setup, including popular themes, page builders, and plugins. Compatible with Gutenberg, Elementor, WPBakery, and more Works with WooCommerce stores No need to change your workflow Easy to enable and configure Designed to be simple You don’t need to be a performance expert to optimize images with Smush image optimizer. Works out of the box Simple settings when you need them No technical knowledge required Safe to use on any site Why choose Smush? There are plenty of image optimization plugins, but Smush focuses on making it easy to optimize images, compress images, and improve performance without complexity. As a leading WordPress image optimizer, Smush gives you powerful optimization tools without the technical hassle. Trusted by over 1 million WordPress users Built specifically for WordPress Regular updates and improvements Backed by the WPMU DEV team Get started in minutes Install Smush, activate it, and start to compress images, optimize images, and enable image lazy load right away. This easy-to-use image optimizer helps most sites see improvements immediately without changing how they upload or manage images. About Us WPMU DEV is a premium supplier of quality WordPress plugins, services and support. Learn more here: https://wpmudev.com/ Don’t forget to stay up to date on everything WordPress from the Internet’s number one resource: WPMU DEV Blog Hey, one more thing… we hope you enjoy our free offerings as much as we’ve loved making them for you! Contact and Credits Originally written by Alex Dunae at Dialect (dialect.ca, e-mail ‘alex’ at ‘dialect dot ca’), 2008-11.