Can dragonflies fly backwards?

, 01 September 2022
Can dragonflies fly backwards?
Migrant Hawker dragonfly © Barry Yates

By Charlotte Owen

WildCall Officer

Yes - and upside down! Dragonflies can fly further, higher and faster than any other insect, and their wings are a marvel of natural engineering. Each one can be operated independently and this provides such exquisite control that a dragonfly can dart off in any direction - even in reverse - and make rapid alterations to its flight path as it chases down its prey, or avoids becoming lunch itself.

High speed cameras have revealed that dragonflies angle their bodies upwards to fly backwards, so that they are positioned vertically rather than horizontally. Rotating their body in this way effectively changes the direction of the force exerted by their wingbeats, propelling the dragonfly backwards. It may look ungainly but it’s surprisingly aerodynamic and efficient, allowing dragonflies to fly backwards for quite some time, and with just as much precision as forward flight. Being able to take off at this angle also allows for a quick getaway when perched in an upright position, darting away from danger.

And that’s not all - dragonflies also have an impressive self-righting mechanism to survive being knocked off balance and will perform a backflip to recover from being unexpectedly upside-down. They can even do this while unconscious and it’s all thanks to the ‘passive stability’ provided by the shape and stiffness of their wings. This natural response is similar to the way that planes are designed to glide if their engines should fail, and the biomechanics of dragonfly flight will no doubt provide invaluable insight for the design of future technology.

Leave a comment

Comments

  • John Lawrence Wakefield:

    The forward wings flap before the rear wings, creating a vortice, a denser pocket of air for the rear wings to ride on. This is how dragonflies can lift more than their own body weight.

    04 Feb 2026 12:27:00

Time Δ Debug Message - Perch Runway 3.2
1782974672.51250 [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
1782974672.53740.0249Matched route: news/[slug:s]
1782974672.53750.0002Server address: 216.73.217.103
1782974672.53760Using master page: /templates/pages/blog/post.php
1782974672.53760Page arguments:
Array
(
    [0] => /news/can-dragonflies-fly-backwards
    [s] => can-dragonflies-fly-backwards
    [1] => can-dragonflies-fly-backwards
)
1782974672.53790.0003 [1] SELECT * FROM swt_pages_staging WHERE pagePath='/news/post' LIMIT 1
1782974672.53890.001 [86] SELECT DISTINCT settingID, settingValue FROM swt_settings WHERE userID=0
1782974672.54080.0019 [1] SELECT locationID FROM swt_shop_tax_locations WHERE locationIsHome=1 LIMIT 1
1782974672.54150.0007INSERT INTO swt_shop_cart(memberID,locationID,currencyID,cartPricing,cartProperties) VALUES(NULL,'1',47,'standard','[]')
1782974672.54680.0054 [1] SELECT * FROM swt_shop_cart WHERE cartID=22509963
1782974672.54750.0007 [1] SELECT * FROM swt_shop_cart WHERE cartID=22509963
1782974672.54820.0007 [nil] SELECT * FROM swt_shop_sales WHERE saleFrom<='2026-07-02 06:44:00' AND saleTo>'2026-07-02 06:44:00' AND saleActive=1 AND saleDeleted IS NULL ORDER BY saleOrder ASC
1782974672.54940.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='can-dragonflies-fly-backwards')) 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-02 06:44:00' ) GROUP BY itemID, sortval ORDER BY sortval ASC LIMIT 0, 10
1782974672.55220.0027 [1] SELECT FOUND_ROWS() AS `count`
1782974672.55280.0006 [1] SELECT * FROM swt_blog_posts WHERE postID=2857 AND postStatus='Published' AND postDateTime<='2026-07-02 06:44:00'
1782974672.55360.0008 [13] SELECT * FROM swt_blog_sections ORDER BY sectionTitle ASC
1782974672.55430.0007 [1] SELECT * FROM swt_blogs ORDER BY blogTitle ASC
1782974672.55490.0006 [1] SELECT * FROM swt_categories WHERE catID=181 LIMIT 1
1782974672.55540.0005 [1] SELECT * FROM swt_categories WHERE catID=49 LIMIT 1
1782974672.55590.0005Using template: /templates/blog/post.html
1782974672.55610.0002 [162] SELECT catID, catPath FROM swt_categories
1782974672.5570.0009 [1] SELECT * FROM swt_blog_posts WHERE postStatus='Published' AND postDateTime<='2026-07-02 06:44:00' AND postSlug='can-dragonflies-fly-backwards'
1782974672.57750.0206Using template: /templates/blog/post.html
1782974672.57820.0006 [250] SELECT country, countryID FROM swt_shop_countries WHERE countryActive=1 ORDER BY country ASC
1782974672.57980.0017Using template: /templates/pages/attributes/seo.html
1782974672.58010.0002 [1] SELECT regionID, regionTemplate, regionPage, regionRev AS rev FROM swt_content_regions WHERE regionKey='Banner image' AND (regionPage='/news/post' OR regionPage='*')
1782974672.58090.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
1782974672.5820.0011 [82] SELECT * FROM swt_pages_staging WHERE pageNew=0 AND pageHidden=0 AND pageDepth >=0 AND pageDepth<=2 ORDER BY pageTreePosition ASC
1782974672.58460.0025 [1] SELECT pageTreePosition FROM swt_pages_staging WHERE pagePath='/news/post' LIMIT 1
1782974672.58510.0005 [2] SELECT pageID FROM swt_pages_staging WHERE pageTreePosition IN ('000-006-001', '000-006', '000') ORDER BY pageTreePosition DESC
1782974672.58710.002Using template: /templates/navigation/ps_nav_template.html
1782974672.58720 [6] Using template: /templates/navigation/ps_nav_template_children.html
1782974672.5880.0008 [4] Using template: /templates/navigation/ps_nav_template_children.html
1782974672.58850.0005 [29] Using template: /templates/navigation/ps_nav_template_children.html
1782974672.59120.0027 [10] Using template: /templates/navigation/ps_nav_template_children.html
1782974672.59230.0011 [7] Using template: /templates/navigation/ps_nav_template_children.html
1782974672.59290.0007 [9] Using template: /templates/navigation/ps_nav_template_children.html
1782974672.59510.0021 [1] SELECT pageTreePosition FROM swt_pages_staging WHERE pagePath='/news/post' OR pageSortPath='/news/post' LIMIT 1
1782974672.59610.0011 [1] SELECT * FROM swt_pages_staging WHERE pageHidden=0 AND pageNew=0 AND pageTreePosition IN ('000-006-001', '000-006', '000') ORDER BY pageTreePosition
1782974672.5990.0029 [1] Using template: /templates/navigation/breadcrumbs.html
1782974672.59960.0005Using template: /templates/blog/post.html
1782974672.59980.0003 [1] SELECT * FROM swt_blog_authors WHERE authorID='1' LIMIT 1
1782974672.60060.0008Using template: /templates/blog/author.html
1782974672.6010.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='can-dragonflies-fly-backwards')) 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-02 06:44:00' ) GROUP BY itemID, sortval ORDER BY sortval ASC LIMIT 0, 1
1782974672.60330.0023 [1] SELECT FOUND_ROWS() AS `count`
1782974672.60380.0005 [1] Using template: /templates/blog/post.html
1782974672.60650.0027Using template: /templates/blog/comment_form.html
1782974672.60740.0009 [1] SELECT * FROM swt_blog_comments WHERE 1=1 AND postID=2857 AND commentStatus='LIVE' ORDER BY FIELD(webmentionType, 'like', 'repost', 'comment', NULL) ASC, commentDateTime ASC
1782974672.66560.0582 [1] Using template: /templates/blog/comment.html
1782974672.66630.0007Using template: /templates/blog/post.html
1782974672.66650.0002 [1] SELECT * FROM swt_blog_authors WHERE authorID='1' LIMIT 1
1782974672.66740.0009 [1] SELECT pageID, pageParentID, pageDepth, pageTreePosition FROM swt_pages_staging WHERE pagePath='/what-we-do' OR pageSortPath='/what-we-do' LIMIT 1
1782974672.6680.0007 [1] SELECT pageID, pageParentID, pageDepth, pageTreePosition FROM swt_pages_staging WHERE pageTreePosition='000-002' LIMIT 1
1782974672.66860.0005 [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
1782974672.67060.002 [1] SELECT pageTreePosition FROM swt_pages_staging WHERE pagePath='/news/post' LIMIT 1
1782974672.6710.0005 [2] SELECT pageID FROM swt_pages_staging WHERE pageTreePosition IN ('000-006-001', '000-006', '000') ORDER BY pageTreePosition DESC
1782974672.67270.0017 [6] Using template: /templates/navigation/footer-nav.html
1782974672.67340.0007 [1] SELECT pageID, pageParentID, pageDepth, pageTreePosition FROM swt_pages_staging WHERE pagePath='/make-a-difference' OR pageSortPath='/make-a-difference' LIMIT 1
1782974672.6740.0006 [1] SELECT pageID, pageParentID, pageDepth, pageTreePosition FROM swt_pages_staging WHERE pageTreePosition='000-005' LIMIT 1
1782974672.67450.0005 [38] SELECT * FROM swt_pages_staging WHERE pageNew=0 AND pageHidden=0 AND pageTreePosition LIKE '000-005%' ORDER BY pageTreePosition ASC
1782974672.67670.0022 [1] SELECT pageTreePosition FROM swt_pages_staging WHERE pagePath='/news/post' LIMIT 1
1782974672.6770.0004 [2] SELECT pageID FROM swt_pages_staging WHERE pageTreePosition IN ('000-006-001', '000-006', '000') ORDER BY pageTreePosition DESC
1782974672.67890.0018 [10] Using template: /templates/navigation/footer-nav.html
1782974672.68220.0033 [1] SELECT pageID, pageParentID, pageDepth, pageTreePosition FROM swt_pages_staging WHERE pagePath='/visit' OR pageSortPath='/visit' LIMIT 1
1782974672.68290.0007 [1] SELECT pageID, pageParentID, pageDepth, pageTreePosition FROM swt_pages_staging WHERE pageTreePosition='000-004' LIMIT 1
1782974672.68330.0004 [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
1782974672.68550.0022 [1] SELECT pageTreePosition FROM swt_pages_staging WHERE pagePath='/news/post' LIMIT 1
1782974672.6860.0005 [2] SELECT pageID FROM swt_pages_staging WHERE pageTreePosition IN ('000-006-001', '000-006', '000') ORDER BY pageTreePosition DESC
1782974672.68780.0018 [29] Using template: /templates/navigation/footer-nav.html
1782974672.69030.0025 [1] SELECT pageID, pageParentID, pageDepth, pageTreePosition FROM swt_pages_staging WHERE pagePath='/make-a-difference' OR pageSortPath='/make-a-difference' LIMIT 1
1782974672.6910.0006 [1] SELECT pageID, pageParentID, pageDepth, pageTreePosition FROM swt_pages_staging WHERE pageTreePosition='000-005' LIMIT 1
1782974672.69140.0004 [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
1782974672.69340.002 [1] SELECT pageTreePosition FROM swt_pages_staging WHERE pagePath='/news/post' LIMIT 1
1782974672.69390.0005 [2] SELECT pageID FROM swt_pages_staging WHERE pageTreePosition IN ('000-006-001', '000-006', '000') ORDER BY pageTreePosition DESC
1782974672.69580.0019 [10] Using template: /templates/navigation/footer-nav.html
1782974672.6970.0012Request time: 0.1871
1782974672.6970Process time: 0.1869
1782974672.6970Memory: 1.6218