diff --git a/meta/conf/distro/include/ptest-packagelists.inc b/meta/conf/distro/include/ptest-packagelists.inc
index f3f42f908a..0eaa09eb33 100644
--- a/meta/conf/distro/include/ptest-packagelists.inc
+++ b/meta/conf/distro/include/ptest-packagelists.inc
@@ -99,6 +99,7 @@ PTESTS_FAST = "\
     rpm-sequoia \
     sed \
     slang \
+    tiff \
     utfcpp \
     wayland \
     xz \
diff --git a/meta/recipes-multimedia/libtiff/tiff/run-ptest b/meta/recipes-multimedia/libtiff/tiff/run-ptest
new file mode 100644
index 0000000000..5c62de52c7
--- /dev/null
+++ b/meta/recipes-multimedia/libtiff/tiff/run-ptest
@@ -0,0 +1,34 @@
+#!/bin/sh
+
+cd $(dirname $0)/test
+
+for test in *.sh; do
+    [ -x "$test" ] || continue
+    
+    # Skip tests for tools with known issues or missing tools
+    case "$test" in
+        *tiffcrop*)
+            # tiffcrop has known security issues and is disabled by default since 4.6.0
+            echo "SKIP: ${test%.sh} (tiffcrop has known issues)"
+            continue
+            ;;
+        *jbig*)
+            # Skip JBIG tests if not supported
+            echo "SKIP: ${test%.sh} (JBIG not supported)"
+            continue
+            ;;
+        *thumbnail*)
+            # thumbnail tool may not be built by default
+            if [ ! -x ../tools/thumbnail ]; then
+                echo "SKIP: ${test%.sh} (thumbnail tool not available)"
+                continue
+            fi
+            ;;
+    esac
+    
+    if ./"$test" >/dev/null 2>&1; then
+        echo "PASS: ${test%.sh}"
+    else
+        echo "FAIL: ${test%.sh}"
+    fi
+done
diff --git a/meta/recipes-multimedia/libtiff/tiff_4.7.1.bb b/meta/recipes-multimedia/libtiff/tiff_4.7.1.bb
index 750565e11c..4175ce5870 100644
--- a/meta/recipes-multimedia/libtiff/tiff_4.7.1.bb
+++ b/meta/recipes-multimedia/libtiff/tiff_4.7.1.bb
@@ -23,7 +23,9 @@ CVE_STATUS[CVE-2023-6228] = "fixed-version: Fixed since 4.7.0, NVD tracks this a
 CVE_STATUS[CVE-2023-6277] = "fixed-version: Fixed since 4.7.0, NVD tracks this as version-less vulnerability"
 CVE_STATUS[CVE-2025-8851] = "fixed-version: Fixed since 4.7.0, NVD tracks this as fixed in 2024-08-11 vulnerability"
 
-inherit autotools multilib_header
+inherit autotools multilib_header ptest
+
+SRC_URI += "file://run-ptest"
 
 CACHED_CONFIGUREVARS = "ax_cv_check_gl_libgl=no"
 
@@ -63,4 +65,76 @@ do_install:append() {
     oe_multilib_header tiffconf.h
 }
 
+do_compile_ptest() {
+    oe_runmake -C ${B}/test
+    # Build additional tools needed for tests (they are in EXTRA_PROGRAMS)
+    oe_runmake -C ${B}/tools thumbnail || bbwarn "thumbnail tool failed to build"
+    oe_runmake -C ${B}/tools rgb2ycbcr || bbwarn "rgb2ycbcr tool failed to build"
+}
+
+do_install_ptest() {
+    install -d ${D}${PTEST_PATH}/test
+    install -d ${D}${PTEST_PATH}/tools
+
+    # Install test executables (they are in .libs after libtool build)
+    if [ -d ${B}/test/.libs ]; then
+        for f in ${B}/test/.libs/*; do
+            if [ -f "$f" ] && [ -x "$f" ]; then
+                case "$(basename $f)" in
+                    *.la|*.so*|*.o|lt-*) ;;
+                    *)
+                        install -m 0755 "$f" ${D}${PTEST_PATH}/tools/
+                        ;;
+                esac
+            fi
+        done
+    fi
+
+    # Also check test directory directly
+    for f in ${B}/test/*; do
+        if [ -f "$f" ] && [ -x "$f" ]; then
+            case "$(basename $f)" in
+                *.sh|*.la|*.so*|*.o|Makefile*|*.log) ;;
+                *)
+                    # Skip if already installed from .libs
+                    [ -f ${D}${PTEST_PATH}/tools/$(basename $f) ] && continue
+                    install -m 0755 "$f" ${D}${PTEST_PATH}/tools/
+                    ;;
+            esac
+        fi
+    done
+
+    # Install extra tools from tools/.libs (thumbnail, rgb2ycbcr)
+    if [ -d ${B}/tools/.libs ]; then
+        for tool in thumbnail rgb2ycbcr; do
+            if [ -f ${B}/tools/.libs/$tool ] && [ -x ${B}/tools/.libs/$tool ]; then
+                install -m 0755 ${B}/tools/.libs/$tool ${D}${PTEST_PATH}/tools/
+            fi
+        done
+    fi
+
+    # Install tiff tools from bindir
+    if [ -d ${D}${bindir} ]; then
+        for tool in ${D}${bindir}/*; do
+            if [ -f "$tool" ]; then
+                ln -sf ${bindir}/$(basename $tool) ${D}${PTEST_PATH}/tools/
+            fi
+        done
+    fi
+
+    # Install test data
+    cp -r ${S}/test/images ${D}${PTEST_PATH}/test/
+    cp -r ${S}/test/refs ${D}${PTEST_PATH}/test/
+
+    # Install test scripts
+    find ${S}/test -maxdepth 1 -name "*.sh" -exec install -m 0755 {} ${D}${PTEST_PATH}/test/ \;
+
+    # Install common.sh if exists
+    if [ -f ${S}/test/common.sh ]; then
+        install -m 0644 ${S}/test/common.sh ${D}${PTEST_PATH}/test/
+    fi
+}
+
+RDEPENDS:${PN}-ptest += "bash"
+
 BBCLASSEXTEND = "native nativesdk"
