---
title: "PDF search in JavaScript | Nutrient"
canonical_url: "https://www.nutrient.io/guides/web/samples/customized-pdf-search/"
md_url: "https://www.nutrient.io/guides/web/samples/customized-pdf-search.md"
last_updated: "2026-06-09T10:26:34.680Z"
description: "Learn how to customize PDF search to match complete words. Explore our JavaScript PDF search library and UI customization guides for more resources."
---

# Customizing PDF text search using JavaScript

This is a quick example of changing the way searching inside a PDF works. The example only searches for complete words. For example, searching for 'the' won’t return 'them' or 'these' in the list of results. Get additional resources by learning about our [JavaScript PDF search library](/guides/web/search.md) or visiting our guide on [customizing the search UI](/guides/web/user-interface/search.md).

[Get Started](https://www.nutrient.io/sdk/web/getting-started.md)

[All Samples](https://www.nutrient.io/guides/web/samples.md)

[Download](https://www.nutrient.io/guides/web/downloads.md)

[Launch Demo](https://www.nutrient.io/demo/)

---

```js

import PSPDFKit from "@nutrient-sdk/viewer";

async function customSearch(term, instance) {
  // We would get an error if we called `instance.search` with a term of 2
  // characters or less. Therefore we stop here and reset the search results to
  // an empty list in this case.
  if (term.length <= 2) {
    return PSPDFKit.Immutable.List([]);
  }

  // Let's take the results from the default search as the foundation.
  const results = await instance.search(term);

  // We only want to find whole words which match the term we entered.
  const filteredResults = results.filter((result) => {
    const searchWord = new RegExp(`\\b${term}\\b`, "i");

    return searchWord.test(result.previewText);
  });

  return filteredResults;
}

export function load(defaultConfiguration) {
  return PSPDFKit.load(defaultConfiguration).then((instance) => {
    let lastSearchTerm = "";

    instance.addEventListener("search.termChange", async (event) => {
      // Opt-out from the default implementation.
      event.preventDefault();

      const { term } = event;

      // Update the search term in the search box. Without this line, the search
      // box would stay empty.
      instance.setSearchState((state) => state.set("term", term));
      lastSearchTerm = term;

      // Perform custom search for the term. We're passing the instance as an
      // additional parameter as we are using Nutrient Web SDK's `instance.search`
      // method under the hood.
      const results = await customSearch(term, instance);

      // Our results could return in a different order than expected. Let's make
      // sure only results matching our current term are applied.
      if (term!== lastSearchTerm) {
        return;
      }

      // Finally we apply the results. Note that you can also modify the search
      // state first and then pass the new state to `instance.setSearchState`.
      const newState = instance.searchState.set("results", results);

      instance.setSearchState(newState);
    });
  });
}

```

This code sample is an example that illustrates how to use our SDK. Please adapt it to your specific use case.

---

## Related pages

- [Open, view, and annotate on images using JavaScript](/guides/web/samples/annotating-images.md)
- [Custom HTML PDF annotations using JavaScript](/guides/web/samples/custom-annotations.md)
- [Add watermarks to PDFs using JavaScript example](/guides/web/samples/add-watermarks-to-pdf-javascript.md)
- [Create custom overlays on PDFs using JavaScript](/guides/web/samples/custom-overlay-items.md)
- [Add electronic signature images to PDFs using JavaScript](/guides/web/samples/adding-image-electronic-signatures.md)
- [Customize the PDF toolbar using JavaScript](/guides/web/samples/customized-pdf-toolbar.md)
- [View PDFs in dark mode using JavaScript](/guides/web/samples/dark-mode-pdf-viewer.md)
- [Customize PDF annotation tooltips using JavaScript](/guides/web/samples/custom-annotation-tooltip.md)
- [Add electronic signatures to PDFs using JavaScript](/guides/web/samples/electronic-signatures-in-pdf.md)
- [Edit PDFs using JavaScript](/guides/web/samples/edit-pdf-javascript.md)
- [Customized Document Editor Toolbar](/guides/web/samples/customized-document-editor-toolbar.md)
- [Customize PDF annotation permissions using JavaScript](/guides/web/samples/custom-annotation-permissions.md)
- [PDF form support using JavaScript](/guides/web/samples/javascript-pdf-form.md)
- [Open PDFs using JavaScript](/guides/web/samples/open-pdf-using-javascript.md)
- [Disable PDF editing and annotations](/guides/web/samples/open-read-only-pdf.md)
- [PDF presentation mode using JavaScript](/guides/web/samples/presentation-mode.md)
- [Storing electronic signatures in the browser using JavaScript](/guides/web/samples/stored-electronic-signatures.md)
- [Handling password-protected PDFs in our JavaScript viewer](/guides/web/samples/password-protected-pdf.md)
- [Customizing JavaScript PDF printing modes](/guides/web/samples/pdf-printing-modes.md)
- [PDF Collaboration permissions using JavaScript](/guides/web/samples/collaboration-permissions.md)
- [Collaborate on PDFs using JavaScript](/guides/web/samples/instant-pdf-collaboration.md)
- [Flipbook PDF viewer using JavaScript](/guides/web/samples/flipbook.md)
- [Hide or reveal area on PDFs using JavaScript](/guides/web/samples/hide-reveal-area-in-pdf.md)
- [PDF annotation in JavaScript](/guides/web/samples/javascript-pdf-annotations.md)
- [Digitally sign a PDF using JavaScript](/guides/web/samples/javascript-digital-signatures.md)
- [JavaScript PDF magazine viewer](/guides/web/samples/javascript-magazine-viewer.md)
- [PDF text selection using JavaScript](/guides/web/samples/pdf-text-selection-javascript.md)
- [Zoom example for our JavaScript PDF viewer](/guides/web/samples/zooming.md)
- [Drag-and-drop UI in our JavaScript PDF viewer](/guides/web/samples/drag-and-drop.md)
- [Redact PDFs using JavaScript](/guides/web/samples/javascript-pdf-redaction.md)
- [Customize the UI for PDF annotations using JavaScript](/guides/web/samples/annotations-inspector.md)

