diff --git a/.changeset/curly-tires-stop.md b/.changeset/curly-tires-stop.md
new file mode 100644
index 00000000..eb8d25f5
--- /dev/null
+++ b/.changeset/curly-tires-stop.md
@@ -0,0 +1,7 @@
+---
+"@withstudiocms/component-registry": patch
+"@studiocms/markdown-remark": patch
+"studiocms": patch
+---
+
+Fixes path resolvers that would lead to failing to process/load on windows.
diff --git a/packages/@studiocms/markdown-remark/src/integration/index.ts b/packages/@studiocms/markdown-remark/src/integration/index.ts
index efbeccfd..8df16673 100644
--- a/packages/@studiocms/markdown-remark/src/integration/index.ts
+++ b/packages/@studiocms/markdown-remark/src/integration/index.ts
@@ -1,5 +1,6 @@
///
+import { fileURLToPath } from 'node:url';
import { addVirtualImports } from '@withstudiocms/internal_helpers/astro-integration';
import createPathResolver, {
toModuleSpecifier,
@@ -55,7 +56,7 @@ const markdownRemark = (
name: '@studiocms/markdown-remark',
hooks: {
'astro:config:setup': (params) => {
- const { resolve: astroRootResolve } = createPathResolver(params.config.root.pathname);
+ const { resolve: astroRootResolve } = createPathResolver(fileURLToPath(params.config.root));
// Extract Logger from params for use in this hook
const logger = params.logger;
diff --git a/packages/@withstudiocms/component-registry/src/registry/handler.ts b/packages/@withstudiocms/component-registry/src/registry/handler.ts
index 50f790b4..d2967da3 100644
--- a/packages/@withstudiocms/component-registry/src/registry/handler.ts
+++ b/packages/@withstudiocms/component-registry/src/registry/handler.ts
@@ -1,5 +1,6 @@
///
+import { fileURLToPath } from 'node:url';
import { deepmerge, Effect, runEffect, Schema } from '@withstudiocms/effect';
import { addVirtualImports } from '@withstudiocms/internal_helpers/astro-integration';
import createPathResolver, {
@@ -170,7 +171,7 @@ export const componentRegistryHandler = async (
integrationLogger(logInfo, 'Setting up component registry...');
const { resolve, resolveModuleSpecifier } = createPathResolver(import.meta.url);
- const { resolve: astroConfigResolve } = createPathResolver(params.config.root.pathname);
+ const { resolve: astroConfigResolve } = createPathResolver(fileURLToPath(params.config.root));
// Resolve necessary paths and registry
const registry = yield* ComponentRegistry;
diff --git a/packages/studiocms/src/utils/lang-helper.ts b/packages/studiocms/src/utils/lang-helper.ts
index a956a377..0dec6544 100644
--- a/packages/studiocms/src/utils/lang-helper.ts
+++ b/packages/studiocms/src/utils/lang-helper.ts
@@ -1,4 +1,5 @@
-import { fileURLToPath } from 'node:url';
+import { join } from 'node:path';
+import { fileURLToPath, pathToFileURL } from 'node:url';
import { glob } from 'tinyglobby';
import type { PluginTranslations } from '../schemas/plugins/i18n.js';
@@ -18,7 +19,9 @@ export async function loadJsTranslations(path: string, base: string): Promise