Meet UK fish expert Jack Perks

, 01 January 2026
Meet UK fish expert Jack Perks
Jack Perks © David Miller

Tell us a bit about yourself and how you came to be so involved with fish

I'm a professional wildlife cameraman and specialise in UK fish. Birds and mammals get a lot of the attention, so I wanted to try and push fish, which are a bit more out of sight, out of mind. Plus you can see incredible behaviours without getting wet! Sticklebacks building nests in the shallows or, if you're lucky, Trout and Salmon leaping over falls.

© Jack Perks

What do you think is the biggest misconception people have about them?

That fish are stupid. They can have some complex social structures and can even learn new behaviours, for example, Perch will follow Eels and wait for them to find prey then rush in to steal it from them.

© Jack Perks

You know a thing or two about fish found in the River Ouse?

It arguably the best place in the country to watch Thin-lipped Mullet congregate in huge numbers to try and get rid of marine parasites in the freshwater. I've visited a few times and it still takes my breath away watching all these fish move in such a small area.

© Jack Perks

Tell us about your book A Field Guide to British Fish and how that came about

I wanted to do a field guide that has both marine and freshwater species in it, so it features over 200 species found across the British Isles.

And the film, Britain's Hidden Fishes?

It came about when working with (TV presenter and angler) Jeremy Wade, as I asked if he'd narrate it. The idea was to create the first kind of documentary focused on UK fish. It will be shown in Lewes in July 2026 at Depot, as part of the Love of Ouse Festival. 

What message would you like to give people reading your book or watching your film?

To give fish a bit more thought, as there are some incredible species here in Britain. And, as well as being important parts of the food chain and environmental indicators, they have some amazing life stories and behaviours all of their own.

Buy Jack's book A Field Guide to British Fish here 

Leave a comment
Time Δ Debug Message - Perch Runway 3.2
1787404215.00140 [907] SELECT p.pagePath, pr.routePattern, pr.routeRegExp, p.pageTemplate, pr.routeOrder, s.settingValue AS siteOffline FROM swt_pages_staging p LEFT JOIN swt_page_routes pr ON p.pageID=pr.pageID LEFT JOIN swt_settings s ON s.settingID='siteOffline' UNION SELECT NULL AS pagePath, pr2.routePattern, pr2.routeRegExp, pr2.templatePath AS pageTemplate, pr2.routeOrder, NULL AS siteOffline FROM swt_page_routes pr2 WHERE templateID!=0 ORDER BY routeOrder ASC, pagePath ASC
1787404215.03860.0372Matched route: news/[slug:s]
1787404215.03880.0002Server address: 216.73.216.140
1787404215.03880Using master page: /templates/pages/blog/post.php
1787404215.03880Page arguments:
Array
(
    [0] => /news/meet-uk-fish-expert-jack-perks
    [s] => meet-uk-fish-expert-jack-perks
    [1] => meet-uk-fish-expert-jack-perks
)
1787404215.03910.0003 [1] SELECT * FROM swt_pages_staging WHERE pagePath='/news/post' LIMIT 1
1787404215.04040.0013 [86] SELECT DISTINCT settingID, settingValue FROM swt_settings WHERE userID=0
1787404215.04280.0023 [1] SELECT locationID FROM swt_shop_tax_locations WHERE locationIsHome=1 LIMIT 1
1787404215.04350.0007INSERT INTO swt_shop_cart(memberID,locationID,currencyID,cartPricing,cartProperties) VALUES(NULL,'1',47,'standard','[]')
1787404215.05020.0067 [1] SELECT * FROM swt_shop_cart WHERE cartID=24380674
1787404215.05090.0008 [1] SELECT * FROM swt_shop_cart WHERE cartID=24380674
1787404215.05160.0007 [nil] SELECT * FROM swt_shop_sales WHERE saleFrom<='2026-08-22 13:10:00' AND saleTo>'2026-08-22 13:10:00' AND saleActive=1 AND saleDeleted IS NULL ORDER BY saleOrder ASC
1787404215.05290.0013 [1] SELECT SQL_CALC_FOUND_ROWS DISTINCT tbl.* FROM ( SELECT idx.itemID, main.*, idx2.indexValue as sortval FROM swt_blog_index idx JOIN swt_blog_posts main ON idx.itemID=main.postID AND idx.itemKey='postID' JOIN swt_blog_index idx2 ON idx.itemID=idx2.itemID AND idx.itemKey='postID' AND idx2.indexKey='_id' WHERE 1=1 AND ((idx.indexKey='postSlug' AND idx.indexValue='meet-uk-fish-expert-jack-perks')) AND idx.itemID=idx2.itemID AND idx.itemKey=idx2.itemKey GROUP BY idx.itemID, idx2.indexValue, postID ) as tbl WHERE (postStatus='Published' AND postDateTime<='2026-08-22 13:10:00' ) GROUP BY itemID, sortval ORDER BY sortval ASC LIMIT 0, 10
1787404215.05750.0046 [1] SELECT FOUND_ROWS() AS `count`
1787404215.05820.0007 [1] SELECT * FROM swt_blog_posts WHERE postID=3873 AND postStatus='Published' AND postDateTime<='2026-08-22 13:10:00'
1787404215.05940.0012 [13] SELECT * FROM swt_blog_sections ORDER BY sectionTitle ASC
1787404215.06020.0008 [1] SELECT * FROM swt_blogs ORDER BY blogTitle ASC
1787404215.06110.0008 [1] SELECT * FROM swt_categories WHERE catID=195 LIMIT 1
1787404215.06170.0006 [1] SELECT * FROM swt_categories WHERE catID=72 LIMIT 1
1787404215.06240.0007 [1] SELECT * FROM swt_categories WHERE catID=66 LIMIT 1
1787404215.06310.0007Using template: /templates/blog/post.html
1787404215.06330.0002 [162] SELECT catID, catPath FROM swt_categories
1787404215.06440.0011 [1] SELECT * FROM swt_blog_posts WHERE postStatus='Published' AND postDateTime<='2026-08-22 13:10:00' AND postSlug='meet-uk-fish-expert-jack-perks'
1787404215.09440.03Using template: /templates/blog/post.html
1787404215.0950.0006 [250] SELECT country, countryID FROM swt_shop_countries WHERE countryActive=1 ORDER BY country ASC
1787404215.09690.0019Using template: /templates/pages/attributes/seo.html
1787404215.09710.0002 [1] SELECT regionID, regionTemplate, regionPage, regionRev AS rev FROM swt_content_regions WHERE regionKey='Banner image' AND (regionPage='/news/post' OR regionPage='*')
1787404215.0980.0008 [nil] SELECT * FROM ( SELECT idx.itemID, c.regionID, idx.pageID, c.itemJSON, idx2.indexValue as sortval FROM swt_content_index idx JOIN swt_content_items c ON idx.itemID=c.itemID AND idx.itemRev=c.itemRev AND idx.regionID=c.regionID JOIN swt_content_index idx2 ON idx.itemID=idx2.itemID AND idx.itemRev=idx2.itemRev AND idx2.indexKey='_order' WHERE ((idx.regionID=104 AND idx.itemRev=0)) AND idx.itemID=idx2.itemID AND idx.itemRev=idx2.itemRev ) as tbl GROUP BY itemID, pageID, itemJSON, sortval, regionID ORDER BY sortval ASC
1787404215.09960.0017 [82] SELECT * FROM swt_pages_staging WHERE pageNew=0 AND pageHidden=0 AND pageDepth >=0 AND pageDepth<=2 ORDER BY pageTreePosition ASC
1787404215.10340.0037 [1] SELECT pageTreePosition FROM swt_pages_staging WHERE pagePath='/news/post' LIMIT 1
1787404215.10410.0007 [2] SELECT pageID FROM swt_pages_staging WHERE pageTreePosition IN ('000-006-001', '000-006', '000') ORDER BY pageTreePosition DESC
1787404215.1070.0029Using template: /templates/navigation/ps_nav_template.html
1787404215.1070 [6] Using template: /templates/navigation/ps_nav_template_children.html
1787404215.10780.0008 [4] Using template: /templates/navigation/ps_nav_template_children.html
1787404215.10830.0005 [29] Using template: /templates/navigation/ps_nav_template_children.html
1787404215.11060.0022 [10] Using template: /templates/navigation/ps_nav_template_children.html
1787404215.11130.0007 [7] Using template: /templates/navigation/ps_nav_template_children.html
1787404215.11160.0004 [9] Using template: /templates/navigation/ps_nav_template_children.html
1787404215.11430.0027 [1] SELECT pageTreePosition FROM swt_pages_staging WHERE pagePath='/news/post' OR pageSortPath='/news/post' LIMIT 1
1787404215.11530.0009 [1] SELECT * FROM swt_pages_staging WHERE pageHidden=0 AND pageNew=0 AND pageTreePosition IN ('000-006-001', '000-006', '000') ORDER BY pageTreePosition
1787404215.11750.0022 [1] Using template: /templates/navigation/breadcrumbs.html
1787404215.11810.0007Using template: /templates/blog/post.html
1787404215.11850.0003 [1] SELECT * FROM swt_blog_authors WHERE authorID='20' LIMIT 1
1787404215.11930.0008Using template: /templates/blog/author.html
1787404215.11970.0004 [1] SELECT SQL_CALC_FOUND_ROWS DISTINCT tbl.* FROM ( SELECT idx.itemID, main.*, idx2.indexValue as sortval FROM swt_blog_index idx JOIN swt_blog_posts main ON idx.itemID=main.postID AND idx.itemKey='postID' JOIN swt_blog_index idx2 ON idx.itemID=idx2.itemID AND idx.itemKey='postID' AND idx2.indexKey='_id' WHERE 1=1 AND ((idx.indexKey='postSlug' AND idx.indexValue='meet-uk-fish-expert-jack-perks')) AND idx.itemID=idx2.itemID AND idx.itemKey=idx2.itemKey GROUP BY idx.itemID, idx2.indexValue, postID ) as tbl WHERE (postStatus='Published' AND postDateTime<='2026-08-22 13:10:00' ) GROUP BY itemID, sortval ORDER BY sortval ASC LIMIT 0, 1
1787404215.12270.003 [1] SELECT FOUND_ROWS() AS `count`
1787404215.12330.0006 [1] Using template: /templates/blog/post.html
1787404215.12620.0029Using template: /templates/blog/comment_form.html
1787404215.12710.001 [nil] SELECT * FROM swt_blog_comments WHERE 1=1 AND postID=3873 AND commentStatus='LIVE' ORDER BY FIELD(webmentionType, 'like', 'repost', 'comment', NULL) ASC, commentDateTime ASC
1787404215.20150.0744 [0] Using template: /templates/blog/comment.html
1787404215.20190.0004Using template: /templates/blog/post.html
1787404215.20220.0003 [1] SELECT * FROM swt_blog_authors WHERE authorID='20' LIMIT 1
1787404215.20310.001 [1] SELECT pageID, pageParentID, pageDepth, pageTreePosition FROM swt_pages_staging WHERE pagePath='/what-we-do' OR pageSortPath='/what-we-do' LIMIT 1
1787404215.20410.0009 [1] SELECT pageID, pageParentID, pageDepth, pageTreePosition FROM swt_pages_staging WHERE pageTreePosition='000-002' LIMIT 1
1787404215.20480.0007 [7] SELECT * FROM swt_pages_staging WHERE pageNew=0 AND pageHidden=0 AND pageTreePosition LIKE '000-002%' AND pageDepth >=1 AND pageDepth<=2 ORDER BY pageTreePosition ASC
1787404215.20820.0033 [1] SELECT pageTreePosition FROM swt_pages_staging WHERE pagePath='/news/post' LIMIT 1
1787404215.20890.0007 [2] SELECT pageID FROM swt_pages_staging WHERE pageTreePosition IN ('000-006-001', '000-006', '000') ORDER BY pageTreePosition DESC
1787404215.21120.0023 [6] Using template: /templates/navigation/footer-nav.html
1787404215.21230.0012 [1] SELECT pageID, pageParentID, pageDepth, pageTreePosition FROM swt_pages_staging WHERE pagePath='/make-a-difference' OR pageSortPath='/make-a-difference' LIMIT 1
1787404215.21320.0009 [1] SELECT pageID, pageParentID, pageDepth, pageTreePosition FROM swt_pages_staging WHERE pageTreePosition='000-005' LIMIT 1
1787404215.2140.0008 [38] SELECT * FROM swt_pages_staging WHERE pageNew=0 AND pageHidden=0 AND pageTreePosition LIKE '000-005%' ORDER BY pageTreePosition ASC
1787404215.21850.0045 [1] SELECT pageTreePosition FROM swt_pages_staging WHERE pagePath='/news/post' LIMIT 1
1787404215.21940.0009 [2] SELECT pageID FROM swt_pages_staging WHERE pageTreePosition IN ('000-006-001', '000-006', '000') ORDER BY pageTreePosition DESC
1787404215.22150.0021 [10] Using template: /templates/navigation/footer-nav.html
1787404215.22480.0032 [1] SELECT pageID, pageParentID, pageDepth, pageTreePosition FROM swt_pages_staging WHERE pagePath='/visit' OR pageSortPath='/visit' LIMIT 1
1787404215.22560.0009 [1] SELECT pageID, pageParentID, pageDepth, pageTreePosition FROM swt_pages_staging WHERE pageTreePosition='000-004' LIMIT 1
1787404215.22630.0007 [30] SELECT * FROM swt_pages_staging WHERE pageNew=0 AND pageHidden=0 AND pageTreePosition LIKE '000-004%' AND pageDepth >=1 AND pageDepth<=2 ORDER BY pageTreePosition ASC
1787404215.22930.0029 [1] SELECT pageTreePosition FROM swt_pages_staging WHERE pagePath='/news/post' LIMIT 1
1787404215.230.0007 [2] SELECT pageID FROM swt_pages_staging WHERE pageTreePosition IN ('000-006-001', '000-006', '000') ORDER BY pageTreePosition DESC
1787404215.23210.0022 [29] Using template: /templates/navigation/footer-nav.html
1787404215.23520.0031 [1] SELECT pageID, pageParentID, pageDepth, pageTreePosition FROM swt_pages_staging WHERE pagePath='/make-a-difference' OR pageSortPath='/make-a-difference' LIMIT 1
1787404215.23620.001 [1] SELECT pageID, pageParentID, pageDepth, pageTreePosition FROM swt_pages_staging WHERE pageTreePosition='000-005' LIMIT 1
1787404215.23690.0007 [11] SELECT * FROM swt_pages_staging WHERE pageNew=0 AND pageHidden=0 AND pageTreePosition LIKE '000-005%' AND pageDepth >=1 AND pageDepth<=2 ORDER BY pageTreePosition ASC
1787404215.24010.0032 [1] SELECT pageTreePosition FROM swt_pages_staging WHERE pagePath='/news/post' LIMIT 1
1787404215.24070.0006 [2] SELECT pageID FROM swt_pages_staging WHERE pageTreePosition IN ('000-006-001', '000-006', '000') ORDER BY pageTreePosition DESC
1787404215.24260.002 [10] Using template: /templates/navigation/footer-nav.html
1787404215.2440.0013Request time: 0.2447
1787404215.2440Process time: 0.2445
1787404215.2440Memory: 1.6237