Ceratophyllum demersum


Family: Ceratophyllaceae

Origin: Cosmopolitan

Side on view of Hornwort growing in murky water.
Flowers are tiny and hard to see. Can displace native aquatic plants as deep as 15m into the water column.
Photo credit: Rohan Wells, NIWA

Regional Pest Management Plan (RPMP) status

  • Aotea — Exclusion
  • Whole region — Sustained control
  • National Pest Plant Accord Species
  • Priority Lakes Tomarata and Rototoa

View more about the RPMP statuses

General description

Submerged aquatic perennial < 7 m tall. Stems are branched and may anchor to sediment or form free-floating mats. Leaves are long, narrow, branched and whorled, with complex architecture. Flowers are minute.

What you need to know

To help protect our environment:

  • You must not breed, distribute, release or sell hornwort. As hornwort is a National Pest Plant Accord species, these restrictions apply within the Auckland region and across the whole of New Zealand.
  • You must not plant hornwort within the Auckland region.
  • You must destroy any hornwort on land that you occupy if it has been planted in breach of the above rules and you are directed to do so by an authorised person.
  • If you see hornwort anywhere on Aotea/Great Barrier Island group, please report it to Auckland Council at pestfree@aucklandcouncil.govt.nz.


Freshwater bodies < 15.5 m deep, drainage ditches.


Vegetative spread from stem fragments, dispersed by water. Human-mediated dispersal through contamination of boats, fishing gear and machinery and deliberate cultivation.

Impact on environment

Forms dense stands and displaces native submerged vegetation down to 15m depth. Alters water flow, increases flooding risk and impedes recreational access of water bodies. Likely to negatively impact kōura.


Recommended approaches

Do not attempt to undertake control of this species on Aotea/Great Barrier Island group. Also site led control is carried out by Auckland Council at other priority lakes. Please report to Auckland Council if seen.

Caution: When using any herbicide or pesticide please read the label thoroughly to ensure that all instructions and safety requirements are followed.

Hornwort under surface of pond.
A submerged aquatic weed found in streams, ponds and wetlands. Stems can grow as long as 7m.
Hornwort held in a hand.
Stems can be anchored in silts or float and form large mats. Can cause blockages to stormwater pond outlets.
Close up of Hornwort stems under water.
Leaves are long and narrow, branched and appear fluffy when seen above the water. Leaves can be green or reddish in colour.
Close up of Hornwort leaves growing under water.
Can cause flooding when the branches become too extensive. Can block drains and outlets during rain events.
Photo credit: Rohan Wells, NIWA
Large patch of Hornwort growing under water.
Each broken stem can grow another plant. Hornwort can be moved between ponds on boats and equipment.
Photo credit: Rohan Wells, NIWA
Dense Hornwort underwater.
Best controlled using specific chemicals that prevent spread. Grows rapidly when water temperatures rise in spring.
Photo credit: Rohan Wells, NIWA
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 'Newtonsoft.Json.Linq.JValue' does not contain a definition for 'macroAlias'
   at CallSite.Target(Closure, CallSite, Object)
   at System.Dynamic.UpdateDelegates.UpdateAndExecute1[T0,TRet](CallSite site, T0 arg0)
   at CallSite.Target(Closure, CallSite, Object)
   at AspNetCore.Views_Partials_grid_editors_macro.ExecuteAsync()
   at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageCoreAsync(IRazorPage page, ViewContext context)
   at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderPageAsync(IRazorPage page, ViewContext context, Boolean invokeViewStarts)
   at Microsoft.AspNetCore.Mvc.Razor.RazorView.RenderAsync(ViewContext context)
   at Microsoft.AspNetCore.Mvc.ViewFeatures.HtmlHelper.RenderPartialCoreAsync(String partialViewName, Object model, ViewDataDictionary viewData, TextWriter writer)
   at Microsoft.AspNetCore.Mvc.ViewFeatures.HtmlHelper.PartialAsync(String partialViewName, Object model, ViewDataDictionary viewData)
   at AspNetCore.Views_Partials_grid_editors_base.ExecuteAsync() in C:\home\site\wwwroot\Views\Partials\grid\editors\base.cshtml:line 6