diff --git a/configure.cmake b/configure.cmake
index 0000000..0000000 100644
--- a/configure.cmake
+++ b/configure.cmake
@@ -660,6 +660,11 @@ qt_feature("webengine-qt-libjpeg" PRIVATE
     CONDITION QT_FEATURE_static
         AND TARGET Qt::Gui
         AND QT_FEATURE_jpeg
         AND NOT QT_FEATURE_system_jpeg
 )
+qt_feature("webengine-system-abseil" PRIVATE
+    LABEL "abseil"
+    AUTODETECT FALSE
+    CONDITION UNIX
+)
 qt_feature("webengine-system-harfbuzz" PRIVATE
@@ -830,4 +835,5 @@ if(UNIX)
     qt_configure_add_summary_entry(ARGS "webengine-system-libtiff")
     qt_configure_add_summary_entry(ARGS "webengine-system-libjpeg")
+    qt_configure_add_summary_entry(ARGS "webengine-system-abseil")
     qt_configure_add_summary_entry(ARGS "webengine-system-libopenjpeg2")
     qt_configure_add_summary_entry(ARGS "webengine-system-harfbuzz")
diff --git a/src/3rdparty/chromium/third_party/abseil-cpp/BUILD.gn b/src/3rdparty/chromium/third_party/abseil-cpp/BUILD.gn
index 0000000..0000000 100644
--- a/src/3rdparty/chromium/third_party/abseil-cpp/BUILD.gn
+++ b/src/3rdparty/chromium/third_party/abseil-cpp/BUILD.gn
@@ -8,9 +8,46 @@
 import("//build/config/c++/c++.gni")
 import("//build/config/sanitizers/sanitizers.gni")
 import("//build/toolchain/toolchain.gni")
+import("//build/config/linux/pkg_config.gni")
 import("//build_overrides/build.gni")
 import("//third_party/abseil-cpp/absl.gni")
 
+if (use_system_abseil) {
+  # When use_system_abseil=true, provide include and link information for the
+  # system-installed Abseil (e.g. from vcpkg).  Each pkg_config package pulls
+  # in its transitive Requires: entries, so the union of these "hub" packages
+  # covers the full absl_component_deps closure used by Chromium.
+  pkg_config("absl_from_pkgconfig") {
+    packages = [
+      # Base and synchronization (many transitive deps: int128, time, mutex...)
+      "absl_base",
+      "absl_synchronization",
+      # Debugging (stacktrace, symbolize, demangle, failure_signal_handler)
+      "absl_failure_signal_handler",
+      # Logging subsystem
+      "absl_log_initialize",
+      # Hashing
+      "absl_hash",
+      # Strings (cord, str_format, string_view, ...)
+      "absl_cord",
+      "absl_str_format",
+      # Status / error handling
+      "absl_statusor",
+      # Random number generation
+      "absl_random_distributions",
+      # Containers (flat_hash_map pulls in btree, inlined_vector, ...)
+      "absl_flat_hash_map",
+      "absl_node_hash_map",
+    ]
+  }
+
+  config("absl_bundled_headers") { include_dirs = [ "." ] }
+
+  group("system_absl") {
+    public_configs = [ ":absl_bundled_headers", ":absl_from_pkgconfig" ]
+  }
+}
+
 config("absl_component_build") {
   defines = [ "ABSL_CONSUME_DLL" ]
 }
@@ -19,3 +56,7 @@
 component("absl") {
-  public_deps = [ ":absl_component_deps" ]
+  if (use_system_abseil) {
+    public_deps = [ ":system_absl" ]
+  } else {
+    public_deps = [ ":absl_component_deps" ]
+  }
   if (is_component_build) {
@@ -54,3 +95,4 @@
 group("absl_component_deps") {
+  if (!use_system_abseil) {
   public_deps = [
     "//third_party/abseil-cpp/absl/algorithm",
@@ -128,4 +170,5 @@
     public_deps += [ ":absl_full_deps" ]
   }
 
+  }
   visibility = [ ":absl" ]
@@ -147,3 +190,3 @@
-  if (!is_component_build) {
+  if (!is_component_build && !use_system_abseil) {
     public_deps += [ ":absl_full_deps" ]
   }
@@ -163,30 +206,32 @@
   }
 }
 
+if (!use_system_abseil) {
 group("absl_full_deps") {
   public_deps = [
     # Banned because each flag registration generates a static initializer, and
     # the flag registration mechanism is problematic in component builds.
     "//third_party/abseil-cpp/absl/flags:config",
     "//third_party/abseil-cpp/absl/flags:flag",
     "//third_party/abseil-cpp/absl/flags:marshalling",
     "//third_party/abseil-cpp/absl/flags:parse",
     "//third_party/abseil-cpp/absl/flags:reflection",
     "//third_party/abseil-cpp/absl/flags:usage",
 
     # Banned because the LOG and CHECK macros conflict with Chrome's version of
     # those macros.
     "//third_party/abseil-cpp/absl/log",
     "//third_party/abseil-cpp/absl/log:check",
   ]
 
   visibility = [
     ":absl_component_deps",
     ":absl_full",
   ]
 
   public_configs = [ "//third_party/abseil-cpp/absl/flags:absl_flags_config" ]
 }
+}
 
 config("absl_include_config") {
   include_dirs = [ "." ]
@@ -238,7 +283,7 @@
   }
 }
 
-if (absl_build_tests) {
+if (absl_build_tests && !use_system_abseil) {
   import("//testing/test.gni")
 
   if (!is_component_build) {
diff --git a/src/3rdparty/chromium/third_party/abseil-cpp/absl.gni b/src/3rdparty/chromium/third_party/abseil-cpp/absl.gni
index 0000000..0000000 100644
--- a/src/3rdparty/chromium/third_party/abseil-cpp/absl.gni
+++ b/src/3rdparty/chromium/third_party/abseil-cpp/absl.gni
@@ -19,11 +19,16 @@ import("//build_overrides/build.gni")
 
 declare_args() {
   absl_build_tests = build_with_chromium
+  use_system_abseil = false
 }
 
 template("absl_source_set") {
   source_set(target_name) {
-    if (defined(invoker.testonly) && invoker.testonly && !absl_build_tests) {
+    if ((defined(invoker.testonly) && invoker.testonly && !absl_build_tests) ||
+        use_system_abseil) {
       not_needed(invoker, "*")
+      if (use_system_abseil) {
+        public_deps = [ "//third_party/abseil-cpp:system_absl" ]
+      }
     } else {
       forward_variables_from(invoker, "*")
@@ -85,5 +90,5 @@ template("absl_source_set") {
 template("absl_test") {
   source_set(target_name) {
-    if (!absl_build_tests) {
+    if (!absl_build_tests || use_system_abseil) {
       not_needed(invoker, "*")
     } else {
diff --git a/src/pdf/CMakeLists.txt b/src/pdf/CMakeLists.txt
index 00621491e..0000000 100644
--- a/src/pdf/CMakeLists.txt
+++ b/src/pdf/CMakeLists.txt
@@ -220,7 +220,11 @@ foreach(arch ${archs})
         extend_gn_list(gnArgArg
             ARGS use_system_libjpeg
             CONDITION QT_FEATURE_webengine_system_libjpeg
         )
+        extend_gn_list(gnArgArg
+            ARGS use_system_abseil
+            CONDITION QT_FEATURE_webengine_system_abseil
+        )
         extend_gn_list(gnArgArg
             ARGS use_qt_libjpeg
             CONDITION QT_FEATURE_webengine_qt_libjpeg
