diff --git a/src/node/build/buildPluginHtml.ts b/src/node/build/buildPluginHtml.ts
index e67f27cc866975..bc064b1321238c 100644
--- a/src/node/build/buildPluginHtml.ts
+++ b/src/node/build/buildPluginHtml.ts
@@ -1,7 +1,7 @@
import { Plugin, RollupOutput, OutputChunk } from 'rollup'
import path from 'path'
import fs from 'fs-extra'
-import { isExternalUrl, cleanUrl } from '../utils/pathUtils'
+import { isExternalUrl, cleanUrl, isDataUrl } from '../utils/pathUtils'
import { resolveAsset, registerAssets } from './buildPluginAsset'
import {
parse as Parse,
@@ -189,7 +189,8 @@ const compileHtml = async (
p.type === NodeTypes.ATTRIBUTE &&
p.value &&
assetAttrs.includes(p.name) &&
- !isExternalUrl(p.value.content)
+ !isExternalUrl(p.value.content) &&
+ !isDataUrl(p.value.content)
) {
assetUrls.push(p)
}
diff --git a/src/node/utils/pathUtils.ts b/src/node/utils/pathUtils.ts
index 92f91284a6acab..c705ec5f1f7dc4 100644
--- a/src/node/utils/pathUtils.ts
+++ b/src/node/utils/pathUtils.ts
@@ -45,6 +45,9 @@ export const parseWithQuery = (
const externalRE = /^(https?:)?\/\//
export const isExternalUrl = (url: string) => externalRE.test(url)
+const dataUrlRE = /^\s*data:/i
+export const isDataUrl = (url: string) => dataUrlRE.test(url)
+
const imageRE = /\.(png|jpe?g|gif|svg|ico|webp)(\?.*)?$/
const mediaRE = /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/
const fontsRE = /\.(woff2?|eot|ttf|otf)(\?.*)?$/i