Flapping, gliding, soaring - identifying birds by how they move

, 02 February 2023
Flapping, gliding, soaring - identifying birds by how they move
Sparrowhawk © Neil Fletcher

By James Duncan, Communities and Wildlife Officer 

Logic dictates that the typical method of identifying species is either through visual appearance or perhaps through vocalisations. However, the way animals move can often be wholly distinctive in itself. In certain cases, for example; fleeting views, at distance, in poor light or weather - movement may offer a far greater clue than appearance itself. Within 'birding circles' movement, flying style, posture and shape form part of the 'overall impression' that a species gives off. Combine these with where it was spotted and what the habitat was and there's a good chance of a relatively reliable identification. This overall impression is known more widely as the 'Giss' or 'Jizz' of a species.

Birds of Prey (or raptors) can frequently pose an identification conundrum. Mostly spotted in flight, they're often silhouetted and at distance so their flight style can be mighty useful. The way they flap and soar varies extensively between species. For example, Kestrel and Sparrowhawk can appear similar in open flight, but Kestrels (like most Falcons) display powerful and consistent wingbeats. Sparrowhawks on the other hand (when not hunting) have a very distinctive flight pattern - 'flap flap' followed by a long 'glide.' If the short, rounded wings have you thinking it may be a Sparrowhawk, the 'flap flap glide' pattern will confirm it for you. (note. be careful not to confuse this with the territorial display flight of a distant Wood Pigeon!) Another raptor with a very distinctive flight pattern is the Hobby, a summer-visiting Falcon and specialist dragonfly hunter. Long-winged, the Hobby has the habit of sweeping its scythe-like wings back, giving it the appearance of a huge and rather gangly Swift. Compare these 'rapid flappers' to the somewhat ponderous elastic wingbeats of a Common Buzzard and it's easy to spot the difference.

Sanderling © Peter Hofman
Sanderling © Peter Hofman

Waders are another group that display some rather defining characteristics of movement. Seen a small pale hyperactive bird relentlessly chasing waves up and down a beach? That's a Sanderling for you. Notice a small bird 'foot-trembling?' (that is, shaking its feet in order to disturb mud-bound invertebrates) You're most likely looking at either a Ringed or Little-ringed Plover. 

Flushed a well-camouflaged mottled brown bird from under your feet? It'll probably be a Snipe of some kind. If it typically takes off from a distance, zig-zagging rapidly whilst calling, that's a Common Snipe. If you practically stand on it before it takes off, flying low, quietly and seemingly a bit half-heartedly, that'll be the winter-visiting Jack Snipe. If you're watching a wader nervously and habitually 'bobbing' its rear end, it's highly probable a Common Sandpiper is the culprit. Though not the only 'bobber' amongst the Sandpipers, it's the most consistent in doing so. Should your small wader be swimming in the water, frequently spinning in circles and pecking constantly at the water like an over-wound clockwork toy, you've spotted an Arctic-breeding Phalarope of some kind, either a Red-necked or Grey.

Of course, truly there are a myriad of birds recognisable from their movements, far too many to list. But here's a few easy ones to look out for; a Blackbird-sized species that flies from the upper reaches of the canopy, arrow-straight, losing height in a regular undulating fashion as it tucks its wings in between flaps - it's a Great-spotted Woodpecker. A Sparrow-sized bird that moves jerkily up, down, along and underneath tree branches - it's a Nuthatch. If the bird has similar habits but only moves up the tree, before flying onto the next tree - it's a Treecreeper. If it's Blackbird-sized and dashes low into vegetation (in a manner that suggests fleeing from a Sparrowhawk) it probably is a Blackbird! But then again, it's also quite possibly a Song Thrush. They have similar habits and both dash low into cover when disturbed. In contrast, the larger and bolder Mistle Thrush tends to gain height more rapidly, flying into open space with distinctive Great-spotted Woodpecker style undulations.

Leave a comment

Comments

  • John Bury:

    What’s the bird of prey at the top of your email about identifying birds by flight?

    09 Feb 2023 11:40:00

  • Sussex Wildlife Trust:

    Hi John, the email image was a Buzzard in flight

  • Malcolm Palfrey:

    Very interesting information.

    09 Feb 2023 12:15:00

  • Elizabeth Akehurst:

    Very interesting, thank you

    09 Feb 2023 12:43:00

  • Christina:

    It would be lovely to have a video of the different flight patterns?! I have real trouble identifying birds!!!

    09 Feb 2023 14:09:00

  • Sally Hennessy:

    Lovely information…. I would love a few short videos birds to help firm my knowledge but this article is very helpful. Thank you

    09 Feb 2023 14:59:00

  • Sue Macdonald:

    Absolutely fascinating, thanks

    09 Feb 2023 16:21:00

  • Julia Brock:

    Very helpful

    09 Feb 2023 17:05:00

  • Jan McKinnell:

    That was really helpful, James, thank you. I have never been very good with coastal bird identification so next time I will now have a better idea.

    09 Feb 2023 17:05:00

  • AJAZ SHEIKH:

    Interesting & very informative description to facilitate Bird identification.Thanks James

    09 Feb 2023 22:34:00

  • Suze:

    Very interesting & helpful. Thank you. As others have said videos would indeed be useful.

    09 Feb 2023 22:53:00

  • Glynis Boucher:

    Very helpful, thanks

    10 Feb 2023 08:13:00

  • Sue Evans:

    Really useful tips that have already helped me to be sure I saw a sparrowhawk the other day. Thank you!

    10 Feb 2023 14:53:00

  • Lynn:

    Thank you. I feel you have helped me retrospectively identify some birds I have seen

    10 Feb 2023 16:27:00

  • Mark Raven:

    I enjoyed this article greatly. I’m no expert but this information both taught me something new, and confirmed my instincts regarding local sparrowhawks and kestrels.

    10 Feb 2023 17:05:00

  • Suze:

    Very interesting & helpful. Thank you. As others have said videos would indeed be useful.

    10 Feb 2023 17:12:00

  • Shelley Gates:

    Thanks for this, a video of different birds of prey whilst flying would be great to help identify the different species

    15 Feb 2023 18:02:00

  • Suze:

    Very interesting & helpful. Thank you. As others have said videos would indeed be useful.

    15 Feb 2023 20:30:00

  • Suze:

    Very interesting & helpful. Thank you. As others have said videos would indeed be useful.

    24 Feb 2023 13:28:00

  • Brian Field:

    this is very interesting – where can I find this video?

    15 Apr 2024 09:53:00

  • Sussex Wildlife Trust:

    There isn't a video

  • Jiĺl:

    I witnessed a bird with a silver belly gliding silently along Ferring rife, I think it was hunting, low to the water. Middle sized. What could it be?

    19 May 2024 19:22:00

  • Lesley Grannum:

    I have seen this bird twice now, flying in front of our vehicle down the same lane. I don’t think it’s a sparrow hawk. It didn’t look big enough or have speckles. It was smooth and a flat brown colour. It flew at the same pace our car was travelling seldom flapped its wings and kind of did a smooth glide all the way up the lane and then veered off into the field and continued to fly parallel to the vehicle. It was very direct in its path like it knew where it was heading. We were in broad Windsor Dorset area. Would love to know if anyone could shed some light on what it could be .

    22 May 2025 05:08:00

Time Δ Debug Message - Perch Runway 3.2
1782930022.08780 [906] 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
1782930022.12830.0406Matched route: news/[slug:s]
1782930022.12850.0001Server address: 216.73.217.103
1782930022.12850Using master page: /templates/pages/blog/post.php
1782930022.12850Page arguments:
Array
(
    [0] => /news/flapping-gliding-soaring-identifying-birds-by-how-they-move
    [s] => flapping-gliding-soaring-identifying-birds-by-how-they-move
    [1] => flapping-gliding-soaring-identifying-birds-by-how-they-move
)
1782930022.12870.0002 [1] SELECT * FROM swt_pages_staging WHERE pagePath='/news/post' LIMIT 1
1782930022.12960.0009 [86] SELECT DISTINCT settingID, settingValue FROM swt_settings WHERE userID=0
1782930022.13170.0021 [1] SELECT locationID FROM swt_shop_tax_locations WHERE locationIsHome=1 LIMIT 1
1782930022.13230.0006INSERT INTO swt_shop_cart(memberID,locationID,currencyID,cartPricing,cartProperties) VALUES(NULL,'1',47,'standard','[]')
1782930022.13420.0018 [1] SELECT * FROM swt_shop_cart WHERE cartID=22492158
1782930022.13470.0005 [1] SELECT * FROM swt_shop_cart WHERE cartID=22492158
1782930022.13520.0005 [nil] SELECT * FROM swt_shop_sales WHERE saleFrom<='2026-07-01 18:20:00' AND saleTo>'2026-07-01 18:20:00' AND saleActive=1 AND saleDeleted IS NULL ORDER BY saleOrder ASC
1782930022.13640.0012 [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='flapping-gliding-soaring-identifying-birds-by-how-they-move')) 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-07-01 18:20:00' ) GROUP BY itemID, sortval ORDER BY sortval ASC LIMIT 0, 10
1782930022.13980.0034 [1] SELECT FOUND_ROWS() AS `count`
1782930022.14040.0006 [1] SELECT * FROM swt_blog_posts WHERE postID=3000 AND postStatus='Published' AND postDateTime<='2026-07-01 18:20:00'
1782930022.14150.001 [13] SELECT * FROM swt_blog_sections ORDER BY sectionTitle ASC
1782930022.14220.0008 [1] SELECT * FROM swt_blogs ORDER BY blogTitle ASC
1782930022.14290.0007 [1] SELECT * FROM swt_categories WHERE catID=191 LIMIT 1
1782930022.14350.0006 [1] SELECT * FROM swt_categories WHERE catID=45 LIMIT 1
1782930022.14410.0006Using template: /templates/blog/post.html
1782930022.14430.0002 [162] SELECT catID, catPath FROM swt_categories
1782930022.14530.001 [1] SELECT * FROM swt_blog_posts WHERE postStatus='Published' AND postDateTime<='2026-07-01 18:20:00' AND postSlug='flapping-gliding-soaring-identifying-birds-by-how-they-move'
1782930022.17390.0286Using template: /templates/blog/post.html
1782930022.17430.0005 [250] SELECT country, countryID FROM swt_shop_countries WHERE countryActive=1 ORDER BY country ASC
1782930022.17590.0015Using template: /templates/pages/attributes/seo.html
1782930022.17610.0002 [1] SELECT regionID, regionTemplate, regionPage, regionRev AS rev FROM swt_content_regions WHERE regionKey='Banner image' AND (regionPage='/news/post' OR regionPage='*')
1782930022.1770.0009 [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
1782930022.17850.0015 [82] SELECT * FROM swt_pages_staging WHERE pageNew=0 AND pageHidden=0 AND pageDepth >=0 AND pageDepth<=2 ORDER BY pageTreePosition ASC
1782930022.18240.0039 [1] SELECT pageTreePosition FROM swt_pages_staging WHERE pagePath='/news/post' LIMIT 1
1782930022.18320.0008 [2] SELECT pageID FROM swt_pages_staging WHERE pageTreePosition IN ('000-006-001', '000-006', '000') ORDER BY pageTreePosition DESC
1782930022.1860.0028Using template: /templates/navigation/ps_nav_template.html
1782930022.18610.0001 [6] Using template: /templates/navigation/ps_nav_template_children.html
1782930022.18710.001 [4] Using template: /templates/navigation/ps_nav_template_children.html
1782930022.18770.0006 [29] Using template: /templates/navigation/ps_nav_template_children.html
1782930022.19140.0037 [10] Using template: /templates/navigation/ps_nav_template_children.html
1782930022.19280.0014 [7] Using template: /templates/navigation/ps_nav_template_children.html
1782930022.19360.0008 [9] Using template: /templates/navigation/ps_nav_template_children.html
1782930022.19670.0031 [1] SELECT pageTreePosition FROM swt_pages_staging WHERE pagePath='/news/post' OR pageSortPath='/news/post' LIMIT 1
1782930022.19770.001 [1] SELECT * FROM swt_pages_staging WHERE pageHidden=0 AND pageNew=0 AND pageTreePosition IN ('000-006-001', '000-006', '000') ORDER BY pageTreePosition
1782930022.20040.0027 [1] Using template: /templates/navigation/breadcrumbs.html
1782930022.20090.0005Using template: /templates/blog/post.html
1782930022.20110.0002 [1] SELECT * FROM swt_blog_authors WHERE authorID='19' LIMIT 1
1782930022.20190.0008Using template: /templates/blog/author.html
1782930022.20230.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='flapping-gliding-soaring-identifying-birds-by-how-they-move')) 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-07-01 18:20:00' ) GROUP BY itemID, sortval ORDER BY sortval ASC LIMIT 0, 1
1782930022.20510.0028 [1] SELECT FOUND_ROWS() AS `count`
1782930022.20570.0006 [1] Using template: /templates/blog/post.html
1782930022.20810.0024Using template: /templates/blog/comment_form.html
1782930022.2090.0009 [21] SELECT * FROM swt_blog_comments WHERE 1=1 AND postID=3000 AND commentStatus='LIVE' ORDER BY FIELD(webmentionType, 'like', 'repost', 'comment', NULL) ASC, commentDateTime ASC
1782930022.27170.0627 [21] Using template: /templates/blog/comment.html
1782930022.27490.0032Using template: /templates/blog/post.html
1782930022.27510.0002 [1] SELECT * FROM swt_blog_authors WHERE authorID='19' LIMIT 1
1782930022.27570.0007 [1] SELECT pageID, pageParentID, pageDepth, pageTreePosition FROM swt_pages_staging WHERE pagePath='/what-we-do' OR pageSortPath='/what-we-do' LIMIT 1
1782930022.27640.0006 [1] SELECT pageID, pageParentID, pageDepth, pageTreePosition FROM swt_pages_staging WHERE pageTreePosition='000-002' LIMIT 1
1782930022.2770.0006 [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
1782930022.27970.0027 [1] SELECT pageTreePosition FROM swt_pages_staging WHERE pagePath='/news/post' LIMIT 1
1782930022.28020.0005 [2] SELECT pageID FROM swt_pages_staging WHERE pageTreePosition IN ('000-006-001', '000-006', '000') ORDER BY pageTreePosition DESC
1782930022.28280.0025 [6] Using template: /templates/navigation/footer-nav.html
1782930022.28360.0008 [1] SELECT pageID, pageParentID, pageDepth, pageTreePosition FROM swt_pages_staging WHERE pagePath='/make-a-difference' OR pageSortPath='/make-a-difference' LIMIT 1
1782930022.28450.0009 [1] SELECT pageID, pageParentID, pageDepth, pageTreePosition FROM swt_pages_staging WHERE pageTreePosition='000-005' LIMIT 1
1782930022.2860.0015 [38] SELECT * FROM swt_pages_staging WHERE pageNew=0 AND pageHidden=0 AND pageTreePosition LIKE '000-005%' ORDER BY pageTreePosition ASC
1782930022.28930.0033 [1] SELECT pageTreePosition FROM swt_pages_staging WHERE pagePath='/news/post' LIMIT 1
1782930022.290.0007 [2] SELECT pageID FROM swt_pages_staging WHERE pageTreePosition IN ('000-006-001', '000-006', '000') ORDER BY pageTreePosition DESC
1782930022.29260.0026 [10] Using template: /templates/navigation/footer-nav.html
1782930022.29620.0036 [1] SELECT pageID, pageParentID, pageDepth, pageTreePosition FROM swt_pages_staging WHERE pagePath='/visit' OR pageSortPath='/visit' LIMIT 1
1782930022.29710.0009 [1] SELECT pageID, pageParentID, pageDepth, pageTreePosition FROM swt_pages_staging WHERE pageTreePosition='000-004' LIMIT 1
1782930022.29790.0008 [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
1782930022.3010.0031 [1] SELECT pageTreePosition FROM swt_pages_staging WHERE pagePath='/news/post' LIMIT 1
1782930022.30160.0007 [2] SELECT pageID FROM swt_pages_staging WHERE pageTreePosition IN ('000-006-001', '000-006', '000') ORDER BY pageTreePosition DESC
1782930022.30420.0025 [29] Using template: /templates/navigation/footer-nav.html
1782930022.30670.0025 [1] SELECT pageID, pageParentID, pageDepth, pageTreePosition FROM swt_pages_staging WHERE pagePath='/make-a-difference' OR pageSortPath='/make-a-difference' LIMIT 1
1782930022.30750.0009 [1] SELECT pageID, pageParentID, pageDepth, pageTreePosition FROM swt_pages_staging WHERE pageTreePosition='000-005' LIMIT 1
1782930022.30810.0006 [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
1782930022.31080.0027 [1] SELECT pageTreePosition FROM swt_pages_staging WHERE pagePath='/news/post' LIMIT 1
1782930022.31140.0006 [2] SELECT pageID FROM swt_pages_staging WHERE pageTreePosition IN ('000-006-001', '000-006', '000') ORDER BY pageTreePosition DESC
1782930022.31390.0025 [10] Using template: /templates/navigation/footer-nav.html
1782930022.31550.0017Request time: 0.2293
1782930022.31550Process time: 0.2291
1782930022.31560Memory: 1.7059