Documentation

Documentation · WMark 1.2.0

WMark Documentation

A complete reference for WMark – Automatic Image Watermark: how it processes your images, what each setting does, what happens to your originals, and the limits you should know before using it on a live site.

1. How WMark works

WMark is a WordPress plugin that stamps a text, a logo, or both onto your images using PHP’s GD library. It edits the image files on your server, so the watermark becomes part of the file. It is not a CSS overlay, and visitors cannot remove it by disabling styles.

When an image is watermarked, WMark:

  1. copies the original file into wp-content/uploads/alw-originals/, keeping the year/month folder structure.
  2. draws the watermark onto the main file, onto the unscaled original if WordPress created a -scaled version, and onto every generated image size that is at least the minimum width.
  3. scales the watermark to each file separately. A 20% logo is 20% of the width of the large size, the medium size, and so on.
  4. marks the image as watermarked, so it is never stamped twice.

WMark makes no external requests. It contains no code that contacts other servers or collects usage data.

2. Requirements and compatibility

ItemStatus
PHP version7.2 or newer, as declared in the plugin header
WordPress versionNo minimum is declared. The developer tested it on a WordPress development build (7.2-alpha) with PHP 8.3. Older versions have not been tested.
PHP GD extensionRequired. Without it, nothing is watermarked and the settings page shows an error.
GD FreeType supportRequired for text watermarks only. A warning is shown if it is missing.
GD WebP supportRequired to process WebP files
MultisiteNot tested
Image optimization, CDN and offload pluginsNot tested. WMark needs the image files to be on your server when it runs.
Admin interface languageArmenian. The strings are not translatable in this version.

3. Settings reference

All settings are on Settings → Logo on images (Logo on images) and require administrator access. They are saved together when you click Save.

LabelMeaningAllowed valuesDefault
Watermark typeWatermark typeLogo only, Text only, Logo + textLogo only
TextWatermark textAny single line of textEmpty, meaning your site’s domain is used
Text colorText colorAny hex color#ffffff
Text sizeLetter height as a % of image width1–304
ShadowShadow under textOn / offOn
LogoLogo image from the Media LibraryA JPEG, PNG or WebP imageNone
PositionPosition7 positionsBottom right
Logo sizeLogo width as a % of image width1–10020
OpacityOpacity (100 = fully visible)1–10080
Distance from the edgeEdge distance as a % of the shorter side0–303
Minimum widthSkip files narrower than this0 or more pixels300
AutomaticWatermark new uploadsOn / offOn

Values outside the allowed ranges are adjusted to the nearest valid value when saved. An invalid color falls back to white.

4. Automatic watermarking

What it does

Adds the watermark to every new image as soon as WordPress has finished creating its thumbnails and other sizes.

How it works

WMark runs when WordPress generates an image’s attachment data. This covers the Media Library uploader, images uploaded inside the block editor, and code that uses WordPress’s standard media functions.

How to enable it

Check Automatic and save. It is on by default.

Example

A food blogger sets the type to Text only (Text only) with the text © myrecipes.blog. Every photo uploaded from then on carries the credit in the bottom-right corner, at every size used by the theme.

Limitations

  • Only applies to images uploaded while the setting is on. Older images need bulk watermarking.
  • Saving new settings does not update images that are already watermarked. See Removing a watermark for how to re-apply.
  • Any Media Library image can be watermarked, including logos, icons and screenshots, as long as it meets the minimum width. Turn the setting off temporarily before uploading images that should stay clean.

5. Text watermarks

What it does

Writes a line of text, such as a copyright notice or your domain, onto the image.

How it works

The text is drawn with the bundled DejaVu Sans Bold font. Its size follows Text size: the value is roughly the height of a capital letter as a percentage of the image width, with a minimum of about 6 px. If the text would be wider than the space available, it shrinks to fit. The color comes from Text color. Transparency comes from Opacity. When Shadow is on, a black, slightly more transparent copy is drawn just below and to the right of the text.

How to configure it

  1. Set Watermark type to Text only.
  2. Enter the text in Text, or leave it empty to use your site’s domain.
  3. Choose the color and size, decide on the shadow, then save.

Example

Text © WBLOG.online, white, size 4, shadow on, position bottom right. On a 1600 px-wide photo the capital letters are about 64 px tall. On the 300 px medium size they are about 12 px tall.

Limitations

  • One line only, in one font and one weight.
  • The font covers Latin, Armenian, Cyrillic and Greek. Chinese, Japanese and Korean characters and emoji are not in the font. Right-to-left scripts such as Arabic and Hebrew are not shaped correctly by GD.
  • Text watermarks need FreeType support in PHP GD.

7. Logo + text

Selecting Logo + text stacks the text under the logo and positions both as one block. Both items are aligned left for the left positions, right for the right positions, and centered otherwise. In this mode the logo may use at most 60% of the image height, leaving room for the text.

If no logo is selected in this mode, only the text is drawn.

8. Position and edge distance

Position offers seven anchor points:

LeftCenterRight
Top left · Top leftTop center · Top centerTop right · Top right
—Center · Center—
Bottom left · Bottom leftBottom center · Bottom centerBottom right · Bottom right

Distance from the edge sets the gap between the watermark and the image edges, as a percentage of the image’s shorter side. At the default of 3, the gap on a 1600 × 1000 px image is 30 px. Middle-left and middle-right positions, tiling across the image, and custom pixel offsets are not available.

Tip: watermarks in a corner are easy to crop out. Center placement gives stronger protection but covers more of the photo.

9. Opacity

Opacity accepts whole numbers from 1 to 100. Despite the label, which translates as “transparency”, the number is opacity: 100 means fully visible and lower numbers are more see-through. One value controls the logo, the text and the text’s shadow together.

Example: at 50, a solid white logo lets about half of the photo show through it.

10. Minimum width

Minimum width skips any file narrower than the number of pixels you enter. The check is made for every generated size separately. With the default of 300, WordPress’s 150 × 150 thumbnails stay clean, while the medium size gets the watermark if it is at least 300 px wide. Portrait images often have a medium size narrower than 300 px. Set the value to 0 to watermark every size.

11. Bulk watermarking

What it does

Applies the current settings to images that are already in your Media Library.

How to use it

  1. Open Media → Library and switch to the list view. These actions do not appear in the grid view.
  2. Select the images, choose Add watermark from Bulk actions, and click Apply.
  3. A notice reports the number of images that were watermarked. Images that already have a WMark watermark, unsupported formats and images that could not be processed are not counted.

Limitations

  • Everything runs in one request, with no progress bar and no background queue. WMark asks PHP for up to 300 seconds, but hosts can enforce lower limits. Use small batches.
  • Any user who can upload files, such as Authors, sees these actions and can apply them to any image they can select.

12. Removing a watermark

The bulk action Remove watermark (restore original) (Remove watermark, restore the original) undoes watermarking for the selected images. For each one, WMark:

  1. deletes the watermarked size files and the scaled file.
  2. copies the saved original from alw-originals back into place.
  3. asks WordPress to regenerate all sizes from the clean original, without re-watermarking.
  4. deletes the saved copy and clears the watermarked flag.

To change the watermark on existing images, remove it first, then run Add watermark again with the new settings.

Removal is only possible for images that WMark watermarked and whose saved original still exists. The saved copy is deleted after a successful removal, so a new backup is created the next time the image is watermarked.

13. What happens to your original images

Destructive operation

WMark overwrites your image files in place. The only copy kept is the single original file in wp-content/uploads/alw-originals/. Make your own backup of wp-content/uploads before bulk-processing existing images.

What is changed

  • Re-encoding: JPEG and WebP files are saved again at quality 90, which can slightly reduce quality or change the file size. PNG files are saved with compression level 6, and palette PNGs become full-color PNGs, which are often larger.
  • Metadata is removed. EXIF and similar data, such as camera details and embedded copyright fields, are not kept in watermarked files. This was confirmed in testing. Embedded color profiles are not kept either, so colors can shift slightly on some photos.
  • Large photos: for images WordPress scales down to a -scaled file, the unscaled original is watermarked too, and that unscaled original is what gets backed up.

Things to know about the saved originals

  • They are publicly reachable. Saved originals sit inside the uploads folder at predictable addresses, for example /wp-content/uploads/alw-originals/2026/10/photo.jpg. An index.php file only prevents folder listing. Anyone who guesses the address can download the un-watermarked image. If that matters to you, block the alw-originals folder in your server configuration.
  • They use extra disk space, roughly one more full-size copy per watermarked image.
  • They are not deleted when you delete an image from the Media Library, or when you uninstall the plugin.
  • File name reuse can restore the wrong image. If you delete a watermarked image and later upload a different image with the same file name in the same month folder, WMark keeps the old saved copy. Running “Remove watermark” on the new image then puts back the old, deleted image. Until this is fixed, delete the matching file from alw-originals when you permanently delete a watermarked image.
  • Migrations: if you move your site without the alw-originals folder, watermarks can no longer be removed.

14. Supported formats

FormatWatermarked?Notes
JPEGYesSaved at quality 90
PNGYesTransparency kept. Palette PNGs become full-color.
WebPYes, if GD supports WebPAnimated WebP files cannot be loaded and are skipped.
GIF, AVIF, HEIC, SVG, BMP, TIFFNoSkipped without a message

15. Activation side effects

Read before activating on a live site

WMark 1.2.0 also contains a site-setup module that runs on activation and changes more than images.

  • Pages: it creates published pages with Armenian text: Home, Blog, About, Contact, Privacy Policy, Terms of Use, Disclaimer and Cookie Policy. Their slugs are home, blog, about, contact, privacy-policy, terms, disclaimer and cookie-policy. A published page that already uses one of these slugs is kept as it is. A draft or other unpublished page with one of these slugs is filled with WMark’s text and published.
  • Reading settings: the homepage is switched to the page with the slug home, the posts page to blog, and the privacy page to privacy-policy. This happens even when those pages already existed on your site before activation.
  • Menus: two menus named “Main menu” (Main menu) and “Footer menu” (Footer menu) are created and placed in empty classic menu locations.
  • Contact form: the shortcode [h24_contact] displays a contact form that emails the site’s admin address. It includes a nonce check and a hidden spam-trap field.
  • Extra admin page: Settings → Site pages (Site pages) lists these pages and can recreate missing ones.

These changes are not undone when you deactivate the plugin. Reset them manually under Settings → Reading, Pages and Appearance → Menus.

16. Security, performance and stored data

Security

  • The settings page requires the manage_options capability. Saved values are sanitized, and out-of-range numbers are adjusted.
  • The bulk actions require the upload_files capability and use WordPress’s standard bulk-action form protection. They do not check whether the user owns each selected image.
  • See saved originals for the public-access consideration.

Performance

  • Each new upload is processed during the upload request, so every size is opened, edited and saved again. This adds time and memory use, especially for very large photos.
  • GD loads full, uncompressed images into memory. Photos of tens of megapixels can exceed low PHP memory limits.

Data stored by WMark

WhereNamePurpose
Optionalw_settingsWatermark settings
Optionh24_pagesIDs of the pages created on activation
Image meta_alw_doneMarks an image as watermarked
Image meta_alw_backupPath of the saved original
Folderuploads/alw-originals/Saved original files

17. Deactivating and uninstalling

  • Watermarks stay in your images after you deactivate or delete WMark, because they are part of the files.
  • To remove watermarks, do it before uninstalling. Run the remove action while the plugin is still active.
  • Nothing is cleaned up automatically. WMark has no uninstall routine. The settings, image meta, the alw-originals folder, and the pages and menus from activation all remain. Delete them manually if you no longer need them.

Need help?

This documentation describes WMark version 1.2.0 and is based on the plugin’s source code and on tests run by the developer. Items marked as not tested have not been verified.