International Scale of River Difficulty


This code has been prepared using the best available information and has been reviewed by a broad cross-section of whitewater experts. The code, however, is only a collection of guidelines; attempts to minimize risks should be flexible, not constrained by a rigid set of rules. Varying conditions and group goals may combine with unpredictable circumstances to require alternate procedures. This code is not intended to serve as a standard of care for commercial outfitters or guides.

The Scale


International Scale of River Difficulty (see Section VI of the Safety Code of American Whitewater for complete descriptions)

This is the American version of a rating system used to compare river difficulty throughout the world. This system is not exact; rivers do not always fit easily into one category, and regional or individual interpretations may cause misunderstandings. It is no substitute for a guidebook or accurate first-hand descriptions of a run.

Paddlers attempting difficult runs in an unfamiliar area should act cautiously until they get a feel for the way the scale is interpreted locally. River difficulty may change each year due to fluctuations in water level, downed trees, recent floods, geological disturbances, or bad weather. Stay alert for unexpected problems!

As river difficulty increases, the danger to swimming paddlers becomes more severe. As rapids become longer and more continuous, the challenge increases. There is a difference between running an occasional Class-IV rapid and dealing with an entire river of this category. Allow an extra margin of safety between skills and river ratings when the water is cold or if the river itself is remote and inaccessible.

The links below lead to the 3 parts of a list of examples of commonly run rapids that fit each of the classifications. Rapids of a difficulty similar to a rapid on this list are rated the same. Rivers are also rated using this scale. An overall river rating should take into account many factors including the difficulty of individual rapids, remoteness, hazards, etc. Each rapid is rated at a specific range of levels. Note that under some circumstances a paddler may find that similarly rated rapids seem to differ an extraordinary amount due to unusual factors that may include boat type, weather, fatigue, and limited experience on certain types of whitewater.



The story behind the American Whitewater rating scale project:

1998 Revisions to the Safety Code of American Whitewater Complete, May-June, 1998

Upgrading the American Version of the International Scale of River Difficulty, Sept-Oct, 1997

American Whitewater adds benchmark rapids to the International Scale of River Difficulty, Nov-Dec, 1997

Rating Survey Letter (used to solicit input to the benchmarked rapids)

Standard Rated Rapids: Class I-III
Standard Rated Rapids: Class IV
Standard Rated Rapids: Class V



For additional copies please write to:

American Whitewater
PO Box 1540, Cullowhee, NC 28723
email: info@amwhitewater.org


Copyright 1998, American Whitewater

Join AW and support river stewardship nationwide!
7.4.3PHP Version726msRequest Duration6MBMemory UsageGET content/{url}Route
    • Booting (63.05ms)
    • Application (663ms)
    • 1 x Application (91.31%)
      663ms
      1 x Booting (8.69%)
      63.05ms
      15 templates were rendered
      • legacy.views.container-view (resources/views/legacy/views/container-view.blade.php)6blade
        Params
        0
        components
        1
        controls
        2
        id
        3
        class
        4
        title
        5
        formRenderService
      • legacy.views.container-view (resources/views/legacy/views/container-view.blade.php)6blade
        Params
        0
        components
        1
        controls
        2
        id
        3
        class
        4
        title
        5
        formRenderService
      • app::layout.gadget (resources/views/layout/gadget.blade.php)2blade
        Params
        0
        contents
        1
        formRenderService
      • layout.columnstyle.one (resources/views/layout/columnstyle/one.blade.php)8blade
        Params
        0
        obLevel
        1
        __env
        2
        app
        3
        hasCGLogo
        4
        errors
        5
        contents
        6
        formRenderService
        7
        layout
      • layout.columnstyle.componentstack (resources/views/layout/columnstyle/componentstack.blade.php)10blade
        Params
        0
        obLevel
        1
        __env
        2
        app
        3
        hasCGLogo
        4
        errors
        5
        contents
        6
        formRenderService
        7
        layout
        8
        stack
        9
        component
      • layout.main (resources/views/layout/main.blade.php)8blade
        Params
        0
        obLevel
        1
        __env
        2
        app
        3
        hasCGLogo
        4
        errors
        5
        contents
        6
        formRenderService
        7
        layout
      • layout._headers (resources/views/layout/_headers.blade.php)8blade
        Params
        0
        obLevel
        1
        __env
        2
        app
        3
        hasCGLogo
        4
        errors
        5
        contents
        6
        formRenderService
        7
        layout
      • layout.header (resources/views/layout/header.blade.php)8blade
        Params
        0
        obLevel
        1
        __env
        2
        app
        3
        hasCGLogo
        4
        errors
        5
        contents
        6
        formRenderService
        7
        layout
      • layout._scripts (resources/views/layout/_scripts.blade.php)8blade
        Params
        0
        obLevel
        1
        __env
        2
        app
        3
        hasCGLogo
        4
        errors
        5
        contents
        6
        formRenderService
        7
        layout
      • layout.navigation (resources/views/layout/navigation.blade.php)9blade
        Params
        0
        obLevel
        1
        __env
        2
        app
        3
        hasCGLogo
        4
        errors
        5
        contents
        6
        formRenderService
        7
        layout
        8
        menu
      • includes.alert.membership (resources/views/includes/alert/membership.blade.php)18blade
        Params
        0
        obLevel
        1
        __env
        2
        app
        3
        hasCGLogo
        4
        errors
        5
        contents
        6
        formRenderService
        7
        layout
        8
        menu
        9
        searchurl
        10
        loginurl
        11
        logouturl
        12
        __currentLoopData
        13
        child
        14
        loop
        15
        otherchild
        16
        shouldNotifyUser
        17
        user
      • navigation.menu.static (resources/views/navigation/menu/static.blade.php)16blade
        Params
        0
        obLevel
        1
        __env
        2
        app
        3
        hasCGLogo
        4
        errors
        5
        contents
        6
        formRenderService
        7
        layout
        8
        menu
        9
        searchurl
        10
        loginurl
        11
        logouturl
        12
        __currentLoopData
        13
        child
        14
        loop
        15
        otherchild
      • includes.footer (resources/views/includes/footer.blade.php)9blade
        Params
        0
        obLevel
        1
        __env
        2
        app
        3
        hasCGLogo
        4
        errors
        5
        contents
        6
        formRenderService
        7
        layout
        8
        menu
      • includes.cg-logo (resources/views/includes/cg-logo.blade.php)9blade
        Params
        0
        obLevel
        1
        __env
        2
        app
        3
        hasCGLogo
        4
        errors
        5
        contents
        6
        formRenderService
        7
        layout
        8
        menu
      • layout.pagemap (resources/views/layout/pagemap.blade.php)8blade
        Params
        0
        obLevel
        1
        __env
        2
        app
        3
        hasCGLogo
        4
        errors
        5
        contents
        6
        formRenderService
        7
        layout
      uri
      GET content/{url}
      middleware
      web
      controller
      App\Http\Controllers\Wh2oController@content
      namespace
      App\Http\Controllers
      where
      as
      generated::Os9R4mqMKRF5ktoI
      file
      app/Http/Controllers/Wh2oController.php:34-68
      10 statements were executed, 4 of which were duplicated, 6 unique18.28ms
      • select * from security where domain in ('WikiGadget') and area is null;
        181μs/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php:476legacy db
        Metadata
        Backtrace
        • 4. /vendor/laravel/framework/src/Illuminate/Foundation/helpers.php:476
        • 6. /app/Legacy/Repositories/InfoADO.php:368
        • 7. /app/Legacy/Repositories/InfoADO.php:391
        • 8. /app/Legacy/Repositories/SecurityInfo.php:188
        • 9. /app/Legacy/Security/BaseSecurity.php:143
      • select * from "articles" where ("id" = '-SecurityGadget-explain' or "short_name" = '-SecurityGadget-explain') and "articles"."deleted_at" is null and "articles"."is_final" = 'true' limit 1
        1.5ms/app/Legacy/Repositories/NewsInfo.php:61wh2o
        Metadata
        Bindings
        • 0. -SecurityGadget-explain
        • 1. -SecurityGadget-explain
        • 2. true
        Backtrace
        • 15. /app/Legacy/Repositories/NewsInfo.php:61
        • 16. /code/wh2o/ArticleGadget.inc:128
        • 17. /code/wh2o/Page1.inc:930
        • 18. /code/wh2o/Page1.inc:1019
        • 19. /code/wh2o/SecurityGadget.inc:150
      • select * from "articles" where "short_name" = '-SecurityGadget-explain' limit 1
        2.76ms/app/Legacy/Repositories/NewsInfo.php:64wh2o
        Metadata
        Bindings
        • 0. -SecurityGadget-explain
        Backtrace
        • 15. /app/Legacy/Repositories/NewsInfo.php:64
        • 16. /code/wh2o/ArticleGadget.inc:128
        • 17. /code/wh2o/Page1.inc:930
        • 18. /code/wh2o/Page1.inc:1019
        • 19. /code/wh2o/SecurityGadget.inc:150
      • select * from "articles" where ("id" = '-SecurityGadget-explain' or "short_name" = '-SecurityGadget-explain') and "articles"."deleted_at" is null and "articles"."is_final" = 'true' limit 1
        2.65ms/app/Legacy/Repositories/NewsInfo.php:61wh2o
        Metadata
        Bindings
        • 0. -SecurityGadget-explain
        • 1. -SecurityGadget-explain
        • 2. true
        Backtrace
        • 15. /app/Legacy/Repositories/NewsInfo.php:61
        • 16. /code/wh2o/ArticleGadget.inc:128
        • 17. /code/wh2o/Page1.inc:930
        • 18. /code/wh2o/Page1.inc:1019
        • 19. /code/wh2o/SecurityGadget.inc:150
      • select * from "articles" where "short_name" = '-SecurityGadget-explain' limit 1
        6.53ms/app/Legacy/Repositories/NewsInfo.php:64wh2o
        Metadata
        Bindings
        • 0. -SecurityGadget-explain
        Backtrace
        • 15. /app/Legacy/Repositories/NewsInfo.php:64
        • 16. /code/wh2o/ArticleGadget.inc:128
        • 17. /code/wh2o/Page1.inc:930
        • 18. /code/wh2o/Page1.inc:1019
        • 19. /code/wh2o/SecurityGadget.inc:150
      • select * from security where domain in ('WelcomeGadget') and area is null;
        252μs/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php:476legacy db
        Metadata
        Backtrace
        • 4. /vendor/laravel/framework/src/Illuminate/Foundation/helpers.php:476
        • 6. /app/Legacy/Repositories/InfoADO.php:368
        • 7. /app/Legacy/Repositories/InfoADO.php:391
        • 8. /app/Legacy/Repositories/SecurityInfo.php:188
        • 9. /app/Legacy/Security/BaseSecurity.php:143
      • select * from security where domain in ('NewsGadget') and area is null;
        1.44ms/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php:476legacy db
        Metadata
        Backtrace
        • 4. /vendor/laravel/framework/src/Illuminate/Foundation/helpers.php:476
        • 6. /app/Legacy/Repositories/InfoADO.php:368
        • 7. /app/Legacy/Repositories/InfoADO.php:391
        • 8. /app/Legacy/Repositories/SecurityInfo.php:188
        • 9. /app/Legacy/Security/BaseSecurity.php:143
      • select * from security where domain in ('SafetyGadget') and area is null;
        148μs/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php:476legacy db
        Metadata
        Backtrace
        • 4. /vendor/laravel/framework/src/Illuminate/Foundation/helpers.php:476
        • 6. /app/Legacy/Repositories/InfoADO.php:368
        • 7. /app/Legacy/Repositories/InfoADO.php:391
        • 8. /app/Legacy/Repositories/SecurityInfo.php:188
        • 9. /app/Legacy/Security/BaseSecurity.php:143
      • select * from security_defaults where domain in ('StreamTeamGadget');
        337μs/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php:476legacy db
        Metadata
        Backtrace
        • 4. /vendor/laravel/framework/src/Illuminate/Foundation/helpers.php:476
        • 6. /app/Legacy/Repositories/InfoADO.php:368
        • 7. /app/Legacy/Repositories/InfoADO.php:391
        • 8. /app/Legacy/Repositories/SecurityInfo.php:134
        • 9. /app/Legacy/Security/BaseSecurity.php:200
      • select * from security_defaults where domain in ('BugTrackerGadget');
        2.48ms/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php:476legacy db
        Metadata
        Backtrace
        • 4. /vendor/laravel/framework/src/Illuminate/Foundation/helpers.php:476
        • 6. /app/Legacy/Repositories/InfoADO.php:368
        • 7. /app/Legacy/Repositories/InfoADO.php:391
        • 8. /app/Legacy/Repositories/SecurityInfo.php:134
        • 9. /app/Legacy/Security/BaseSecurity.php:200
          _token
          J7iw0nRmvhB6DXQRV6UhGg4MyGgKauxfkHTjQrzs
          page
          array:1 [ "count" => -1 ]
          PHPDEBUGBAR_STACK_DATA
          []
          path_info
          /content/Wiki/safety:internation_scale_of_river_difficulty
          status_code
          200
          
          status_text
          OK
          format
          html
          content_type
          text/html; charset=UTF-8
          request_query
          []
          
          request_request
          []
          
          request_headers
          0 of 0
          array:15 [ "priority" => array:1 [ 0 => "u=0, i" ] "accept-encoding" => array:1 [ 0 => "gzip, deflate, br, zstd" ] "sec-fetch-dest" => array:1 [ 0 => "document" ] "sec-fetch-user" => array:1 [ 0 => "?1" ] "sec-fetch-mode" => array:1 [ 0 => "navigate" ] "sec-fetch-site" => array:1 [ 0 => "none" ] "accept" => array:1 [ 0 => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" ] "user-agent" => array:1 [ 0 => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" ] "upgrade-insecure-requests" => array:1 [ 0 => "1" ] "sec-ch-ua-platform" => array:1 [ 0 => ""Windows"" ] "sec-ch-ua-mobile" => array:1 [ 0 => "?0" ] "sec-ch-ua" => array:1 [ 0 => ""HeadlessChrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"" ] "cache-control" => array:1 [ 0 => "no-cache" ] "pragma" => array:1 [ 0 => "no-cache" ] "host" => array:1 [ 0 => "beta.americanwhitewater.org" ] ]
          request_server
          0 of 0
          array:42 [ "USER" => "www-data" "HOME" => "/var/www" "HTTP_PRIORITY" => "u=0, i" "HTTP_ACCEPT_ENCODING" => "gzip, deflate, br, zstd" "HTTP_SEC_FETCH_DEST" => "document" "HTTP_SEC_FETCH_USER" => "?1" "HTTP_SEC_FETCH_MODE" => "navigate" "HTTP_SEC_FETCH_SITE" => "none" "HTTP_ACCEPT" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" "HTTP_USER_AGENT" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" "HTTP_UPGRADE_INSECURE_REQUESTS" => "1" "HTTP_SEC_CH_UA_PLATFORM" => ""Windows"" "HTTP_SEC_CH_UA_MOBILE" => "?0" "HTTP_SEC_CH_UA" => ""HeadlessChrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"" "HTTP_CACHE_CONTROL" => "no-cache" "HTTP_PRAGMA" => "no-cache" "HTTP_HOST" => "beta.americanwhitewater.org" "REDIRECT_STATUS" => "200" "SERVER_NAME" => "beta.americanwhitewater.org" "SERVER_PORT" => "443" "SERVER_ADDR" => "172.31.18.125" "REMOTE_PORT" => "41792" "REMOTE_ADDR" => "18.222.112.64" "SERVER_SOFTWARE" => "nginx/1.18.0" "GATEWAY_INTERFACE" => "CGI/1.1" "HTTPS" => true "REQUEST_SCHEME" => "https" "SERVER_PROTOCOL" => "HTTP/2.0" "DOCUMENT_ROOT" => "/opt/americanwhitewater.org/public" "DOCUMENT_URI" => "/index.php" "REQUEST_URI" => "/content/Wiki/safety:internation_scale_of_river_difficulty" "SCRIPT_NAME" => "/index.php" "CONTENT_LENGTH" => "" "CONTENT_TYPE" => "" "REQUEST_METHOD" => "GET" "QUERY_STRING" => "" "PHP_VALUE" => "post_max_size=20M" "SCRIPT_FILENAME" => "/opt/americanwhitewater.org/public/index.php" "FCGI_ROLE" => "RESPONDER" "PHP_SELF" => "/index.php" "REQUEST_TIME_FLOAT" => 1743876183.1946 "REQUEST_TIME" => 1743876183 ]
          request_cookies
          []
          
          response_headers
          0 of 0
          array:5 [ "content-type" => array:1 [ 0 => "text/html; charset=UTF-8" ] "cache-control" => array:1 [ 0 => "no-cache, private" ] "date" => array:1 [ 0 => "Sat, 05 Apr 2025 18:03:03 GMT" ] "set-cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6IlVhYlZNTVVneGhSQTJOaHhMMUY5T1E9PSIsInZhbHVlIjoiTjlUQXlYYkl5cEpkRUJvVGt6ZGdXL0FoVllYNVl6aGNzeHZ4UHc3SmhYc3NyZ2c0VnExUzg3R2VvTWY5NEhPdmlWR2lkNHFJN05ZOXlHV1JMaVd1czZDM0k1Z0FuWUV1SndkSGRhV3QyMEdjVmk1WitLZmkwQjQwc2JrYVBxaDEiLCJtYWMiOiIxNzg5NDg0NWRjYjY5ZDVjYWJkZDE1MTIyMzhlYjQwOTRmYWI1MmI5ZjQ5MDRhYjYyYzEzOGRkM2FhZWQyYTI2In0%3D; expires=Sat, 05-Apr-2025 20:03:03 GMT; Max-Age=7200; path=/XSRF-TOKEN=eyJpdiI6IlVhYlZNTVVneGhSQTJOaHhMMUY5T1E9PSIsInZhbHVlIjoiTjlUQXlYYkl5cEpkRUJvVGt6ZGdXL0FoVllYNVl6aGNzeHZ4UHc3SmhYc3NyZ2c0VnExUzg3R2VvTWY5NEhPdmlWR2lkN" 1 => "DWa976077ab53ea1a0f12b663e732b73c0=eyJpdiI6IkJhRmhpeFpJaHduWnNaT2FtVmp0cEE9PSIsInZhbHVlIjoiYk8yNjJVZU5pd3dCYm5pUXhsN3dHdysrVlNUeUt5VisxYzd5aU0rL2JHNitRWmdtSlNvRzQ0VVBDRzl0ZXFIZCIsIm1hYyI6IjBmNWJjZTk1NWZlNjA5MjhhYjdiYzg2YTdlYTg5ZjIzMWQwNjU4NGMyNjA3OWJjOTM2MzlkMDhmOTdiZGJhMzUifQ%3D%3D; expires=Sat, 05-Apr-2025 18:02:03 GMT; Max-Age=0; path=/; httponlyDWa976077ab53ea1a0f12b663e732b73c0=eyJpdiI6IkJhRmhpeFpJaHduWnNaT2FtVmp0cEE9PSIsInZhbHVlIjoiYk8yNjJVZU5pd3dCYm5pUXhsN3dHdysrVlNUeUt5VisxYzd5aU0rL2JHNitRWmdtSlNvR" ] "Set-Cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6IlVhYlZNTVVneGhSQTJOaHhMMUY5T1E9PSIsInZhbHVlIjoiTjlUQXlYYkl5cEpkRUJvVGt6ZGdXL0FoVllYNVl6aGNzeHZ4UHc3SmhYc3NyZ2c0VnExUzg3R2VvTWY5NEhPdmlWR2lkNHFJN05ZOXlHV1JMaVd1czZDM0k1Z0FuWUV1SndkSGRhV3QyMEdjVmk1WitLZmkwQjQwc2JrYVBxaDEiLCJtYWMiOiIxNzg5NDg0NWRjYjY5ZDVjYWJkZDE1MTIyMzhlYjQwOTRmYWI1MmI5ZjQ5MDRhYjYyYzEzOGRkM2FhZWQyYTI2In0%3D; expires=Sat, 05-Apr-2025 20:03:03 GMT; path=/XSRF-TOKEN=eyJpdiI6IlVhYlZNTVVneGhSQTJOaHhMMUY5T1E9PSIsInZhbHVlIjoiTjlUQXlYYkl5cEpkRUJvVGt6ZGdXL0FoVllYNVl6aGNzeHZ4UHc3SmhYc3NyZ2c0VnExUzg3R2VvTWY5NEhPdmlWR2lkN" 1 => "DWa976077ab53ea1a0f12b663e732b73c0=eyJpdiI6IkJhRmhpeFpJaHduWnNaT2FtVmp0cEE9PSIsInZhbHVlIjoiYk8yNjJVZU5pd3dCYm5pUXhsN3dHdysrVlNUeUt5VisxYzd5aU0rL2JHNitRWmdtSlNvRzQ0VVBDRzl0ZXFIZCIsIm1hYyI6IjBmNWJjZTk1NWZlNjA5MjhhYjdiYzg2YTdlYTg5ZjIzMWQwNjU4NGMyNjA3OWJjOTM2MzlkMDhmOTdiZGJhMzUifQ%3D%3D; expires=Sat, 05-Apr-2025 18:02:03 GMT; path=/; httponlyDWa976077ab53ea1a0f12b663e732b73c0=eyJpdiI6IkJhRmhpeFpJaHduWnNaT2FtVmp0cEE9PSIsInZhbHVlIjoiYk8yNjJVZU5pd3dCYm5pUXhsN3dHdysrVlNUeUt5VisxYzd5aU0rL2JHNitRWmdtSlNvR" ] ]
          session_attributes
          0 of 0
          array:3 [ "_token" => "J7iw0nRmvhB6DXQRV6UhGg4MyGgKauxfkHTjQrzs" "page" => array:1 [ "count" => -1 ] "PHPDEBUGBAR_STACK_DATA" => [] ]