Is there a native/optimal size for cover art from Mixcloud?

In other words: Is there a Mixcloud URL that fetches un-resized cover art?

On Mixcloud, cover art has URLs like this:

https://thumbnailer.mixcloud.com/unsafe/___x___/extaudio/c/b/e/6/68ae-07c1-47a2-a41a-8506288b46cd

Except the underscores are replaced with the width and height of the image. These URLs accept arbitrary numbers, and scale the image accordingly. Even at 9999×9999px, their thumbnailer generates a cover image at the requested resolution.

The API, however, returns very modest resolutions, with a limit of 1024×1024px:

"1024wx1024h": "https://thumbnailer.mixcloud.com/unsafe/1024x1024/extaudio/c/b/e/6/68ae-07c1-47a2-a41a-8506288b46cd"

If you specify 0×0px, you get 640×640px, which is the third-highest resolution offered by the API.

(To see the JSON returned by the API for a mix on Mixcloud, change the domain in the page’s URL to api.mixcloud.com.)

The help page doesn’t mention image resolutions, but this post from 2014 on the Mixcloud blog calls 500×500px cover art “ideal”. Not only is that small, neither the site nor the API serves this resolution. I downloaded covers at this size and at 640×640px, and compared them to a 1024×1024 cover. The quality of the 1024 image was much better; it was not just upscaled.

I use 1024×1024 for now since I don’t want to go through the trial and error of comparing higher resolutions. Last time I checked, Stig’s Art Grabr did not support Mixcloud. Is there are a better resolution to use? Or, ideally, a URL that serves the cover at the native size?

Nowadays Image Max URL is the go-to userscript for finding the original image. For Mixcloud it also currently uses the 0x0 approach:

		if (domain === "thumbnailer.mixcloud.com") {
			// https://thumbnailer.mixcloud.com/unsafe/300x300/extaudio/8/4/1/d/f744-6169-4217-8d70-fe2abfd417f2
			//   https://thumbnailer.mixcloud.com/unsafe/0x0/extaudio/8/4/1/d/f744-6169-4217-8d70-fe2abfd417f2
			return src.replace(/\/unsafe\/[0-9]+x[0-9]+\//, "/unsafe/0x0/");

5 Likes

Thanks, @chaban. Word to the wise: In my comparisons, the size returned by 0x0 (640×640 px) is not optimal. In the samples I’ve compared so far, I see mostly higher fidelity above 640×640. The visual differences are not due to the compression ratio, since the quality setting (Q80) is constant. But, if you increase the resolution high enough, then eventually you might see the blurring and fuzzy edges characteristic of bicubic upscaling.

Here’s a cover with text over a photographic cover. The 1024×1024 version has a level of detail not present at the lower resolution.

  • 640×640 – Indistinct borders around letterforms. Faces of boys in foreground have very little detail. People in background look like pixel art.
  • 1024×1024 – Letterforms are well-defined and have fewer artefacts. Boys in foreground now have facial features. People in background are more recognisable as subjects of a 1990s photograph.
  • 2048×2048 – A little more detail in the faces and hair of the boys in the foreground.

Here’s a high-contrast, black-and-white image with hard edges. In this one, the 640×640 version is noisy, but there may be smoothing and blending in the 1024×1024 version.

  • 640×640 – Has aliasing and compression artefacts, but lines are crisp. The LED dot effect in the domain name at the bottom is preserved, but the strokes of the letterforms have irregular widths.
  • 1024×1024 – Hard edges are smooth, but also soft or blurry. Tone blending in brushstrokes. JPEG artefacts (blocks and “mosquito bites”) are much less evident. The letterforms in the domain name at the bottom are now consistent.
  • 2028×2048 – I see no appreciable difference between this and 1024×1024.

If someone here has a Mixcloud account and cares to do a little test, perhaps they could learn the minimum and maximum image sizes that Mixcloud accepts. Those numbers would be helpful parameters.

5 Likes