resmush is a R package that allows users to optimize and compress images using reSmush.it. reSmush.it is a free API that provides image optimization and has been implemented in WordPress and many other tools.
Some of the features of reSmush.it include:
- Free optimization services with no API key required.
- Support for both local and online images.
- Supported image formats:
png,jpg/jpeg,gif,bmp,tiff. - Maximum image size: 5 MB.
- Compression using several algorithms:
Installation
Install resmush from CRAN with:
install.packages("resmush")You can install the development version of resmush from GitHub with:
# install.packages("pak")
pak::pak("dieghernan/resmush")Alternatively, install resmush using the r-universe:
# Install resmush in R:
install.packages("resmush", repos = c(
"https://dieghernan.r-universe.dev",
"https://cloud.r-project.org"
))Example
Compressing an online jpg image:
library(resmush)
url <- paste0(
"https://raw.githubusercontent.com/dieghernan/",
"resmush/main/img/jpg_example_original.jpg"
)
resmush_url(url, outfile = "man/figures/jpg_example_compress.jpg", overwrite = TRUE)
#> ══ resmush summary ═════════════════════════════════════════════════════════════
#> ℹ Input: 1 url with size 44.4 Kb
#> ✔ Success for 1 url: Size now is 44.3 Kb (was 44.4 Kb). Saved 131 bytes (0.29%).
#> See result in directory 'man/figures'.
Original picture (top): 178.7 Kb; Optimized picture (bottom): 45 Kb (Compression: 74.8%). Click to enlarge.
The compression quality for jpg files can be adjusted using the qlty argument. However, it is recommended to keep this value above 90 to maintain good image quality.
# Extreme case
resmush_url(url,
outfile = "man/figures/jpg_example_compress_low.jpg", overwrite = TRUE,
qlty = 3
)
#> ══ resmush summary ═════════════════════════════════════════════════════════════
#> ℹ Input: 1 url with size 44.4 Kb
#> ✔ Success for 1 url: Size now is 2.2 Kb (was 44.4 Kb). Saved 42.2 Kb (94.97%).
#> See result in directory 'man/figures'.All the functions return (invisibly) a dataset summarizing the process. The following example shows how this works when compressing a local file:
png_file <- system.file("extimg/example.png", package = "resmush")
# For the example, copy to a temporary file
tmp_png <- tempfile(fileext = ".png")
file.copy(png_file, tmp_png, overwrite = TRUE)
#> [1] TRUE
summary <- resmush_file(tmp_png, overwrite = TRUE)
tibble::as_tibble(summary[, -c(1, 2)])
#> # A tibble: 1 × 6
#> src_size dest_size compress_ratio notes src_bytes dest_bytes
#> <chr> <chr> <chr> <chr> <dbl> <dbl>
#> 1 239.9 Kb 70.7 Kb 70.54% OK 245618 72356Other alternatives
Several other R packages also provide image optimization tools:
-
xfun (Xie 2024), which includes:
-
xfun::tinify(): Similar toresmush_file()but uses TinyPNG and requires an API key. -
xfun::optipng(): Compresses local files using OptiPNG, which must be installed locally.
-
- tinieR by jmablog: An R interface to TinyPNG.
-
optout by @coolbutuseless: Similar to
xfun::optipng()but with more options. Requires additional local software.
| tool | CRAN | Additional software? | Online? | API Key? | Limits? |
|---|---|---|---|---|---|
xfun::tinify() |
Yes | No | Yes | Yes | 500 files/month (free tier) |
xfun::optipng() |
Yes | Yes | No | No | No |
| tinieR | No | No | Yes | Yes | 500 files/month (free tier) |
| optout | No | Yes | No | No | No |
| resmush | Yes | No | Yes | No | Max size 5 MB |
Table 1: R packages: Comparison of alternatives for optimizing images.
| tool | png | jpg | gif | bmp | tiff | webp | |
|---|---|---|---|---|---|---|---|
xfun::tinify() |
✅ | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ |
xfun::optipng() |
✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| tinieR | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ |
| optout | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ |
| resmush | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
Table 2: R packages: Supported formats.
Citation
Hernangómez D (2026). resmush: Optimize and Compress Image Files with reSmush.it. doi:10.32614/CRAN.package.resmush, https://dieghernan.github.io/resmush/.
A BibTeX entry for LaTeX users is
@Manual{R-resmush,
title = {{resmush}: Optimize and Compress Image Files with {reSmush.it}},
doi = {10.32614/CRAN.package.resmush},
author = {Diego Hernangómez},
year = {2026},
version = {0.2.2.9000},
url = {https://dieghernan.github.io/resmush/},
abstract = {Compress local and online images using the reSmush.it API service <https://resmush.it/>.},
}


