diff --git a/DESCRIPTION b/DESCRIPTION
index 839de68..107d156 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -1,7 +1,7 @@
 Package: RKorAPClient
 Type: Package
 Title: 'KorAP' Web Service Client Package
-Version: 1.3.0
+Version: 1.3.0.9000
 Authors@R:
     c(person(given = "Marc",
              family = "Kupietz",
@@ -39,7 +39,6 @@
     httr2,
     curl,
     methods,
-    PTXQC,
     purrr,
     rlang,
     stringr,
diff --git a/NAMESPACE b/NAMESPACE
index 880f999..2fd3705 100644
--- a/NAMESPACE
+++ b/NAMESPACE
@@ -58,10 +58,6 @@
 import(keyring)
 import(methods)
 import(utils)
-importFrom(PTXQC,
-  lcpCount,
-  lcsCount
-)
 importFrom(broom,tidy)
 importFrom(curl,has_internet)
 importFrom(dplyr,
diff --git a/NEWS.md b/NEWS.md
index 6d84c25..732f895 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -1,3 +1,7 @@
+# unpublished dev version 1.3.0.9000
+
+- dropped the `PTXQC` dependency, which was imported for two small string functions (`lcpCount()` and `lcsCount()`, used by `queryStringToLabel()`) but pulled in `rmzqc`, `jsonvalidate` and `V8`, and with them the only dependency requiring a `libv8` installation. The two functions are now implemented in the package itself, 10 to 65 times faster than the originals, and with unchanged results
+
 # RKorAPClient 1.3.0
 
 - added `cacheAs` parameter to `collocationAnalysis()` for transparent result caching: if the specified RDS file exists, the cached result is returned immediately; otherwise the analysis runs and the result is saved to the file (`.rds` extension is added automatically if omitted)
diff --git a/R/misc.R b/R/misc.R
index ac70f47..6e7340f 100644
--- a/R/misc.R
+++ b/R/misc.R
@@ -57,6 +57,76 @@
     mutate(f = .data$f * 10^2, conf.low = .data$conf.low * 10^2, conf.high = .data$conf.high * 10^2)
 }
 
+#' Number of characters that all given strings share as a prefix
+#'
+#' Replaces `PTXQC::lcpCount()`, to avoid depending on PTXQC for two small
+#' string functions. The length is determined by binary search over vectorized
+#' [startsWith()] calls, which needs `log2(n)` instead of `n` comparisons for a
+#' common prefix of `n` characters.
+#'
+#' As in `PTXQC::lcpCount()`, a single string is its own prefix, and an empty
+#' vector has a common prefix of length 0.
+#'
+#' @param strings vector of strings
+#' @return number of characters common to the beginning of all `strings`
+#' @noRd
+longestCommonPrefixLength <- function(strings) {
+  strings <- as.character(strings)
+  if (length(strings) == 0) {
+    return(0L)
+  }
+  if (length(strings) == 1) {
+    return(nchar(strings[1]))
+  }
+
+  low <- 0L
+  high <- min(nchar(strings))
+  while (low < high) {
+    middle <- (low + high + 1L) %/% 2L
+    # isTRUE keeps NAs from breaking the condition, as in PTXQC, where they
+    # make the character comparison fail and thus end the common prefix
+    if (isTRUE(all(startsWith(strings, substr(strings[1], 1L, middle))))) {
+      low <- middle
+    } else {
+      high <- middle - 1L
+    }
+  }
+  low
+}
+
+#' Number of characters that all given strings share as a suffix
+#'
+#' Replaces `PTXQC::lcsCount()`, which reverses every string character by
+#' character before looking for the common prefix. Works like
+#' `longestCommonPrefixLength()`, but anchored at the end of the strings.
+#'
+#' @param strings vector of strings
+#' @return number of characters common to the end of all `strings`
+#' @noRd
+longestCommonSuffixLength <- function(strings) {
+  strings <- as.character(strings)
+  if (length(strings) == 0) {
+    return(0L)
+  }
+  if (length(strings) == 1) {
+    return(nchar(strings[1]))
+  }
+
+  first <- strings[1]
+  firstLength <- nchar(first)
+  low <- 0L
+  high <- min(nchar(strings))
+  while (low < high) {
+    middle <- (low + high + 1L) %/% 2L
+    if (isTRUE(all(endsWith(strings, substr(first, firstLength - middle + 1L, firstLength))))) {
+      low <- middle
+    } else {
+      high <- middle - 1L
+    }
+  }
+  low
+}
+
 #' Convert query or vc strings to plot labels
 #'
 #' Converts a vector of query or vc strings to typically appropriate legend labels
@@ -74,9 +144,6 @@
 #' queryStringToLabel(c("[marmot/m=mood:subj]", "[marmot/m=mood:ind]"))
 #' queryStringToLabel(c("wegen dem [tt/p=NN]", "wegen des [tt/p=NN]"))
 #'
-#' @importFrom PTXQC lcpCount
-#' @importFrom PTXQC lcsCount
-#'
 #' @export
 queryStringToLabel <- function(data, pubDateOnly = FALSE, excludePubDate = FALSE) {
   if (pubDateOnly) {
@@ -84,11 +151,11 @@
   } else if(excludePubDate) {
     data <-substring(data, 1, regexpr("(pub|creation)Date", data))
   }
-  leftCommon = lcpCount(data)
+  leftCommon = longestCommonPrefixLength(data)
   while (leftCommon > 0 && grepl("[[:alnum:]/=.*!]", substring(data[1], leftCommon, leftCommon))) {
     leftCommon <- leftCommon - 1
   }
-  rightCommon = lcsCount(data)
+  rightCommon = longestCommonSuffixLength(data)
   while (rightCommon > 0 && grepl("[[:alnum:]/=.*!]", substring(data[1], 1+nchar(data[1]) - rightCommon, 1+nchar(data[1]) - rightCommon))) {
     rightCommon <- rightCommon - 1
   }
diff --git a/Readme.md b/Readme.md
index 8a9e19d..34ad100 100644
--- a/Readme.md
+++ b/Readme.md
@@ -302,10 +302,10 @@
 ```bash
 # Debian, Ubuntu, ...
 sudo apt -f install # install possibly missing RStudio dependencies
-sudo apt install r-base-dev r-cran-rcpp r-cran-cpp11 libcurl4-openssl-dev libxml2-dev libsodium-dev libsecret-1-dev libfontconfig1-dev libssl-dev libv8-dev
+sudo apt install r-base-dev r-cran-rcpp r-cran-cpp11 libcurl4-openssl-dev libxml2-dev libsecret-1-dev libfontconfig1-dev libssl-dev
 
 # Fedora, CentOS, RHEL, Rocky Linux, AlmaLinux, ...
-sudo dnf install R-devel libcurl-devel openssl-devel libxml2-devel libsodium-devel libsecret-devel fontconfig-devel v8-devel
+sudo dnf install R-devel libcurl-devel openssl-devel libxml2-devel libsecret-devel fontconfig-devel
 
 # Arch Linux
 pacman -S base-devel gcc-fortran libsodium curl
diff --git a/tests/testthat/test-common-affixes.R b/tests/testthat/test-common-affixes.R
new file mode 100644
index 0000000..0314864
--- /dev/null
+++ b/tests/testthat/test-common-affixes.R
@@ -0,0 +1,59 @@
+lcp <- RKorAPClient:::longestCommonPrefixLength
+lcs <- RKorAPClient:::longestCommonSuffixLength
+
+test_that("longestCommonPrefixLength counts the shared prefix", {
+  expect_equal(lcp(c("abc", "abd")), 2)
+  expect_equal(lcp(c("abc", "abc")), 3)
+  expect_equal(lcp(c("xyz", "abc")), 0)
+  expect_equal(lcp(c("aaa", "aa", "a")), 1)
+  expect_equal(lcp(c("prefix_A_suffix", "prefix_B_suffix")), 7)
+  expect_equal(lcp(c("üöä-test", "üöä-rest")), 4)
+})
+
+test_that("longestCommonSuffixLength counts the shared suffix", {
+  expect_equal(lcs(c("abc", "dbc")), 2)
+  expect_equal(lcs(c("abc", "abc")), 3)
+  expect_equal(lcs(c("xyz", "abc")), 0)
+  expect_equal(lcs(c("aaa", "aa", "a")), 1)
+  expect_equal(lcs(c("prefix_A_suffix", "prefix_B_suffix")), 7)
+  expect_equal(lcs(c("abc-üöä", "xyz-üöä")), 4)
+})
+
+test_that("empty vectors, empty strings and single strings behave as before", {
+  # a single string is its own prefix and suffix, as in the PTXQC functions
+  # these replace
+  expect_equal(lcp(character(0)), 0)
+  expect_equal(lcs(character(0)), 0)
+  expect_equal(lcp("single"), 6)
+  expect_equal(lcs("single"), 6)
+  expect_equal(lcp(c("", "")), 0)
+  expect_equal(lcs(c("", "")), 0)
+  expect_equal(lcp(c("abc", "")), 0)
+  expect_equal(lcs(c("", "abc")), 0)
+})
+
+test_that("queryStringToLabel clips common prefixes and suffixes", {
+  expect_equal(
+    queryStringToLabel(paste("textType = /Zeit.*/ & pubDate in", 2010:2019)),
+    as.character(2010:2019)
+  )
+  expect_equal(
+    queryStringToLabel(c("[marmot/m=mood:subj]", "[marmot/m=mood:ind]")),
+    c("subj", "ind")
+  )
+  expect_equal(
+    queryStringToLabel(c("wegen dem [tt/p=NN]", "wegen des [tt/p=NN]")),
+    c("dem", "des")
+  )
+})
+
+test_that("queryStringToLabel honours pubDateOnly and excludePubDate", {
+  vc <- paste("textType = /Zeit.*/ & pubDate in", 2010:2012)
+  expect_equal(queryStringToLabel(vc, pubDateOnly = TRUE), as.character(2010:2012))
+  expect_equal(
+    queryStringToLabel(c("textDomain = /Wirtschaft.*/ & pubDate in 2010",
+                         "textDomain != /Wirtschaft.*/ & pubDate in 2010"),
+                       excludePubDate = TRUE),
+    c("=", "!=")
+  )
+})
