Are Cat Hairballs a Normal Nuisance or Something Serious?

Hairballs are a fact of life for some cats and their owners. But are hairballs really normal for healthy cats? Or could frequent hairballs signal a more serious concern?

A HAIRY DILEMMA

You probably know a hairball when you see one — an unpleasant-looking, slimy, cigar-shaped wad of matted fur that’s easily mistaken for something you might scoop from your cat’s litter box. Saliva, stomach juices (aka gastric secretions like mucus) and digested food are also common components of hairballs.

Hairballs are a natural byproduct of grooming. Cats are fanatical groomers, and the little backward-facing barbs (aka papillae) on their tongue act like a hairbrush, grabbing loose hair and pulling it into the mouth.

The cat’s digestive system has evolved to handle some amount of hair swallowed during routine grooming. Under normal circumstances, swallowed hair moves through the digestive tract along with food and exits the body in stool. But when cats have a lot of hair or are shedding, some hair accumulates in the stomach, where it forms a hairball that irritates the stomach lining. Once the hairball reaches a certain size, your cat typically throws it up.

Very little information has been published about the incidence and causes of hairballs in cats. However, veterinarians and cat owners know from experience that long-haired cats are more likely to have hairballs than short-haired cats.

COULD IT BE MORE THAN JUST A HAIRBALL?

Some veterinarians are not concerned about those cats that throw up a hairball once every few weeks. Other veterinarians consider only one to two hairballs per year to be normal and harmless. But if your cat is bringing up a hairball once a week or more, veterinary specialists in feline medicine like Dr. Scherk now recommend having your cat examined by a veterinarian because they believe that frequent hairballs are a sign that something isn’t right.

Additionally, not everything containing hair that a cat vomits is a considered a hairball. Contrary to what some cat owners believe, puddles of clear, frothy or yellow liquid with strands of cat hair aren’t hairballs. They are “vomit with hair,” writes Margie Scherk, DVM, DABVP (Feline Practice), a board-certified feline medicine specialist in Vancouver, Canada. Anytime a cat is repeatedly vomiting (with or without hair), a veterinarian should be consulted.

When frequent hairballs are observed, feline medicine specialists consider them to be a result of excessive grooming — which can be triggered by stress or anxiety, skin allergies, pain or external parasites — or an underlying disease that results in abnormal movements of the digestive tract (poor intestinal motility). Inflammatory bowel disease (IBD) and intestinal lymphoma are diseases that can affect intestinal motility, increase the risk of hairballs and cause vomiting.

Gary Norsworthy, DVM, DABVP (Feline Practice), a board-certified feline specialist at Alamo Feline Health Center in San Antonio, Texas, has learned that cats who experience chronic vomiting — with or without hairballs — may have chronic small bowel (small intestinal) disease. Small bowel disease starts with mild inflammation in the intestines that, if left untreated, advances to severe inflammation, also known as IBD. And in some cats, IBD progresses to lymphoma. He recommends that cats who are vomiting two or more times per month for several consecutive months should have an ultrasound of their abdomen. If any abnormalities are noted during the ultrasound procedure, then biopsies of the small intestine are warranted.

So before starting a hairball remedy, have your cat examined by your veterinarian to confirm that the hairball vomiting is just about the hairball and not a more serious condition. Mild intestinal inflammation and IBD are treatable conditions, and there are no good reasons why your cat (and you) needs to put up with chronic vomiting.

STEPS TO MINIMIZE A HAIRBALL PROBLEM

There are steps you can take to reduce your feline friend’s hairball issue. Just be aware that no single remedy helps all cats.

Regularly brush your cat. Routine combing or brushing, especially of long-haired cats, can help reduce the amount of hair that your cat consumes during grooming. Many cats enjoy being brushed, and it’s a great way to bond with your kitty. But for those cats who dislike being brushed, consider wearing grooming gloves as you gently pet your cat.

Give your cat a specially formulated hairball remedy gel or treats. A wide variety of options are available to help eliminate and possibly prevent hairballs. While some products use petrolatum as an intestinal lubricant, others use a combination of omega fatty acids and fiber.

Feed a “hairball diet.” For stubborn cases, you may need to feed a cat food formulated specifically to control hairballs like Diamond Naturals Indoor Cat Hairball Control Dinner for Adult Cats or Diamond Naturals Indoor Cat Chicken & Rice Formula. These foods are high in insoluble fiber to help move swallowed hair through the digestive tract.

You and your cat don’t have to live with frequent hairballs. They aren’t normal. If you have any questions about your cat’s hairballs or vomiting frequency, please talk with your veterinarian.

The information in this blog has been developed with our veterinarian and is designed to help educate pet parents. If you have questions or concerns about your pet's health or nutrition, please talk with your veterinarian.

Search

  • Where to Buy Diamond Pet Food Near Me
    [gravityform id="22" ajax="true"]
    <div class='gf_browser_unknown gform_wrapper gravity-theme scoop-form_wrapper' id='gform_wrapper_22' style='display:none'><div id='gf_22' class='gform_anchor' tabindex='-1'></div> <div class='gform_heading'> <h2 class="gform_title">The Scoop Newsletter</h2> <span class='gform_description'></span> <p class='gform_required_legend'>&quot;<span class="gfield_required gfield_required_asterisk">*</span>&quot; indicates required fields</p> </div><form method='post' enctype='multipart/form-data' target='gform_ajax_frame_22' id='gform_22' class='scoop-form' action='/blog/grooming/shedding/hairballs-normal-or-serious/#gf_22' > <div class='gform_body gform-body'><div id='gform_fields_22' class='gform_fields top_label form_sublabel_below description_below'><div id="field_22_8" class="gfield gfield--width-full gfield_html gfield_html_formatted gfield_no_follows_desc field_sublabel_below field_description_below gfield_visibility_visible" data-js-reload="field_22_8"><p class="sign-up-text">Sign up to receive email communications, including our <span style="white-space:nowrap;">e-newsletter</span>, The Scoop, where you can be the first to know about social contests, new blog posts and more!</p></div><fieldset id="field_22_1" class="gfield field_sublabel_above field_description_below hidden_label gfield_visibility_visible" data-js-reload="field_22_1"><legend class='gfield_label gfield_label_before_complex' >Name</legend><div class='ginput_complex ginput_container no_prefix has_first_name no_middle_name has_last_name no_suffix gf_name_has_2 ginput_container_name' id='input_22_1'> <span id='input_22_1_3_container' class='name_first' > <label for='input_22_1_3' >First Name</label> <input type='text' name='input_1.3' id='input_22_1_3' value='' aria-required='false' /> </span> <span id='input_22_1_6_container' class='name_last' > <label for='input_22_1_6' >Last Name</label> <input type='text' name='input_1.6' id='input_22_1_6' value='' aria-required='false' /> </span> </div></fieldset></fieldset><div id="field_22_2" class="gfield gfield--width-full gfield_contains_required field_sublabel_below field_description_below gfield_visibility_visible" data-js-reload="field_22_2"><label class='gfield_label' for='input_22_2' >Email<span class="gfield_required"><span class="gfield_required gfield_required_asterisk"> * <span class='sr-only'> Required</span></span></span></label><div class='ginput_container ginput_container_email'> <input name='input_2' id='input_22_2' type='text' value='' class='large' placeholder='EMAIL ADDRESS' aria-required="true" aria-invalid="false" /> </div></div><fieldset id="field_22_3" class="gfield gfield--width-full pet-parent-radio gfield_contains_required field_sublabel_below field_description_above gfield_visibility_visible" data-js-reload="field_22_3"><legend class='gfield_label' >PROUD PARENT OF A<span class="gfield_required"><span class="gfield_required gfield_required_asterisk"> * <span class='sr-only'> Required</span></span></span></legend><div class='ginput_container ginput_container_radio'><div class='gfield_radio' id='input_22_3'> <div class='gchoice gchoice_22_3_0'> <input class='gfield-choice-input' name='input_3' type='radio' value='DOG' id='choice_22_3_0' onchange='gformToggleRadioOther( this )' /> <label for='choice_22_3_0' id='label_22_3_0'>DOG</label> </div> <div class='gchoice gchoice_22_3_1'> <input class='gfield-choice-input' name='input_3' type='radio' value='CAT' id='choice_22_3_1' onchange='gformToggleRadioOther( this )' /> <label for='choice_22_3_1' id='label_22_3_1'>CAT</label> </div> <div class='gchoice gchoice_22_3_2'> <input class='gfield-choice-input' name='input_3' type='radio' value='BOTH' id='choice_22_3_2' onchange='gformToggleRadioOther( this )' /> <label for='choice_22_3_2' id='label_22_3_2'>BOTH</label> </div></div></div></fieldset></fieldset><div id="field_22_7" class="gfield gfield--width-full gfield_html gfield_html_formatted gfield_no_follows_desc field_sublabel_below field_description_below gfield_visibility_visible" data-js-reload="field_22_7"><button class="dropdown-toggle" type="button" id="puppy-drop" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">DO YOU HAVE A PUPPY?*</button></div><fieldset id="field_22_6" class="gfield gfield--width-full scoop-puppy-radios gfield_contains_required field_sublabel_below field_description_above gfield_visibility_visible" data-js-reload="field_22_6"><legend class='gfield_label' >Do you have a Puppy?<span class="gfield_required"><span class="gfield_required gfield_required_asterisk"> * <span class='sr-only'> Required</span></span></span></legend><div class='gfield_description' id='gfield_description_22_6'>*By answering "Yes" to this question, you agree to receive the <i>Puppy Love</i> email series</div><div class='ginput_container ginput_container_radio'><div class='gfield_radio' id='input_22_6'> <div class='gchoice gchoice_22_6_0'> <input class='gfield-choice-input' name='input_6' type='radio' value='NO' id='choice_22_6_0' onchange='gformToggleRadioOther( this )' aria-describedby="gfield_description_22_6" /> <label for='choice_22_6_0' id='label_22_6_0'>NO</label> </div> <div class='gchoice gchoice_22_6_1'> <input class='gfield-choice-input' name='input_6' type='radio' value='Yes - 1 month old (or younger)' id='choice_22_6_1' onchange='gformToggleRadioOther( this )' /> <label for='choice_22_6_1' id='label_22_6_1'>Yes, they're 1 month old</label> </div> <div class='gchoice gchoice_22_6_2'> <input class='gfield-choice-input' name='input_6' type='radio' value='Yes - 2 months old' id='choice_22_6_2' onchange='gformToggleRadioOther( this )' /> <label for='choice_22_6_2' id='label_22_6_2'>Yes, they're 2 months old</label> </div> <div class='gchoice gchoice_22_6_3'> <input class='gfield-choice-input' name='input_6' type='radio' value='Yes - 3 months old' id='choice_22_6_3' onchange='gformToggleRadioOther( this )' /> <label for='choice_22_6_3' id='label_22_6_3'>Yes, they're 3 months old</label> </div> <div class='gchoice gchoice_22_6_4'> <input class='gfield-choice-input' name='input_6' type='radio' value='Yes - 4 months old' id='choice_22_6_4' onchange='gformToggleRadioOther( this )' /> <label for='choice_22_6_4' id='label_22_6_4'>Yes, they're 4 months old</label> </div> <div class='gchoice gchoice_22_6_5'> <input class='gfield-choice-input' name='input_6' type='radio' value='Yes - 5 months old' id='choice_22_6_5' onchange='gformToggleRadioOther( this )' /> <label for='choice_22_6_5' id='label_22_6_5'>Yes, they're 5 months old</label> </div> <div class='gchoice gchoice_22_6_6'> <input class='gfield-choice-input' name='input_6' type='radio' value='Yes - 6 months old' id='choice_22_6_6' onchange='gformToggleRadioOther( this )' /> <label for='choice_22_6_6' id='label_22_6_6'>Yes, they're 6 months old</label> </div> <div class='gchoice gchoice_22_6_7'> <input class='gfield-choice-input' name='input_6' type='radio' value='Yes - 7 months old' id='choice_22_6_7' onchange='gformToggleRadioOther( this )' /> <label for='choice_22_6_7' id='label_22_6_7'>Yes, they're 7 months old</label> </div> <div class='gchoice gchoice_22_6_8'> <input class='gfield-choice-input' name='input_6' type='radio' value='Yes - 8 months old' id='choice_22_6_8' onchange='gformToggleRadioOther( this )' /> <label for='choice_22_6_8' id='label_22_6_8'>Yes, they're 8 months old</label> </div> <div class='gchoice gchoice_22_6_9'> <input class='gfield-choice-input' name='input_6' type='radio' value='Yes - 9 months old' id='choice_22_6_9' onchange='gformToggleRadioOther( this )' /> <label for='choice_22_6_9' id='label_22_6_9'>Yes, they're 9 months old</label> </div> <div class='gchoice gchoice_22_6_10'> <input class='gfield-choice-input' name='input_6' type='radio' value='Yes - 10 months old' id='choice_22_6_10' onchange='gformToggleRadioOther( this )' /> <label for='choice_22_6_10' id='label_22_6_10'>Yes, they're 10 months old</label> </div> <div class='gchoice gchoice_22_6_11'> <input class='gfield-choice-input' name='input_6' type='radio' value='Yes - 11 months old' id='choice_22_6_11' onchange='gformToggleRadioOther( this )' /> <label for='choice_22_6_11' id='label_22_6_11'>Yes, they're 11 months old</label> </div> <div class='gchoice gchoice_22_6_12'> <input class='gfield-choice-input' name='input_6' type='radio' value='Yes - 12 months old' id='choice_22_6_12' onchange='gformToggleRadioOther( this )' /> <label for='choice_22_6_12' id='label_22_6_12'>Yes, they're 12 months old</label> </div></div></div></fieldset></fieldset><fieldset id="field_22_9" class="gfield gfield--width-full field_sublabel_below field_description_below hidden_label gfield_visibility_hidden" data-js-reload="field_22_9"><div class='admin-hidden-markup'><i class='gform-icon gform-icon--hidden'></i><span>Hidden</span></div><legend class='gfield_label gfield_label_before_complex' >Newsletter Subscribe</legend><div class='ginput_container ginput_container_checkbox'><div class='gfield_checkbox' id='input_22_9'><div class='gchoice gchoice_22_9_1'> <input class='gfield-choice-input' name='input_9.1' type='checkbox' value='Company Newsletters, Contests &amp; More' checked='checked' id='choice_22_9_1' /> <label for='choice_22_9_1' id='label_22_9_1'>Company Newsletters, Contests & More</label> </div><div class='gchoice gchoice_22_9_2'> <input class='gfield-choice-input' name='input_9.2' type='checkbox' value='Puppy Love for your pup&#039;s first year?' checked='checked' id='choice_22_9_2' /> <label for='choice_22_9_2' id='label_22_9_2'>Puppy Love for your pup's first year?</label> </div></div></div></fieldset></fieldset><div id="field_22_10" class="gfield gfield--width-full field_sublabel_below field_description_below hidden_label gfield_visibility_hidden" data-js-reload="field_22_10"><div class='admin-hidden-markup'><i class='gform-icon gform-icon--hidden'></i><span>Hidden</span></div><label class='gfield_label' for='input_22_10' >No Puppy subscribe</label><div class='ginput_container ginput_container_text'><input name='input_10' id='input_22_10' type='text' value='Company Newsletters, Contests &amp; More' class='large' aria-invalid="false" /> </div></div><div id="field_22_11" class="gfield gfield--width-full gform_hidden field_sublabel_below field_description_below gfield_visibility_visible" data-js-reload="field_22_11"><div class='ginput_container ginput_container_text'><input name='input_11' id='input_22_11' type='hidden' class='gform_hidden' aria-invalid="false" value='The Scoop PopUp' /></div></div></div></div> <div class='gform_footer top_label'> <input type="submit" id="gform_submit_button_22" class="gform_button button om-trigger-conversion scoop-pupout-submit-btn" value="I WANT THE SCOOP!" onclick='if(window["gf_submitting_22"]){return false;} window["gf_submitting_22"]=true; ' onkeypress='if( event.keyCode == 13 ){ if(window["gf_submitting_22"]){return false;} window["gf_submitting_22"]=true; jQuery("#gform_22").trigger("submit",[true]); }'> <input type='hidden' name='gform_ajax' value='form_id=22&amp;title=1&amp;description=1&amp;tabindex=0' /> <input type='hidden' class='gform_hidden' name='is_submit_22' value='1' /> <input type='hidden' class='gform_hidden' name='gform_submit' value='22' /> <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> <input type='hidden' class='gform_hidden' name='state_22' value='WyJbXSIsIjVmNTUxNjllZWEyZDg2NzZiODNmOTc4MzE4MjAxOTg5Il0=' /> <input type='hidden' class='gform_hidden' name='gform_target_page_number_22' id='gform_target_page_number_22' value='0' /> <input type='hidden' class='gform_hidden' name='gform_source_page_number_22' id='gform_source_page_number_22' value='1' /> <input type='hidden' name='gform_field_values' value='' /> </div> </form> </div> <iframe style='display:none;width:0px;height:0px;' src='about:blank' name='gform_ajax_frame_22' id='gform_ajax_frame_22' title='This iframe contains the logic required to handle Ajax powered Gravity Forms.'></iframe> <script type="text/javascript"> gform.initializeOnLoaded( function() {gformInitSpinner( 22, 'https://www.diamondpet.com/wp-content/plugins/gravityforms/images/spinner.svg' );jQuery('#gform_ajax_frame_22').on('load',function(){var contents = jQuery(this).contents().find('*').html();var is_postback = contents.indexOf('GF_AJAX_POSTBACK') >= 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find('#gform_wrapper_22');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_22').length > 0;var is_redirect = contents.indexOf('gformRedirect(){') >= 0;var is_form = form_content.length > 0 && ! is_redirect && ! is_confirmation;var mt = parseInt(jQuery('html').css('margin-top'), 10) + parseInt(jQuery('body').css('margin-top'), 10) + 100;if(is_form){jQuery('#gform_wrapper_22').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_22').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_22').removeClass('gform_validation_error');}setTimeout( function() { /* delay the scroll by 50 milliseconds to fix a bug in chrome */ jQuery(document).scrollTop(jQuery('#gform_wrapper_22').offset().top - mt); }, 50 );if(window['gformInitDatepicker']) {gformInitDatepicker();}if(window['gformInitPriceFields']) {gformInitPriceFields();}var current_page = jQuery('#gform_source_page_number_22').val();gformInitSpinner( 22, 'https://www.diamondpet.com/wp-content/plugins/gravityforms/images/spinner.svg' );jQuery(document).trigger('gform_page_loaded', [22, current_page]);window['gf_submitting_22'] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find('.GF_AJAX_POSTBACK').html();if(!confirmation_content){confirmation_content = contents;}setTimeout(function(){jQuery('#gform_wrapper_22').replaceWith(confirmation_content);jQuery(document).scrollTop(jQuery('#gf_22').offset().top - mt);jQuery(document).trigger('gform_confirmation_loaded', [22]);window['gf_submitting_22'] = false;wp.a11y.speak(jQuery('#gform_confirmation_message_22').text());}, 50);}else{jQuery('#gform_22').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger('gform_post_render', [22, current_page]);} );} ); </script>