Vestvågøy Top (EN)

About Vestvågøy Top (EN)

The Vestvågøy Top (EN) is a lightweight, boxy-style knit top featuring a boatneck, garter ridges, and eye-catching dropped stitches. Designed to be seamless and knit from the bottom up, the top includes options for short sleeves or sleeveless styling. It’s inspired by the sea textures of Norway, with a center knit stitch for visual balance and smooth transitions.

You can knit it using either two strands of Lima by Lamana (50g = 200 m) for a dense feel or one strand of Regina by Lang Yarns (50g = 175 m) for a lighter drape. Gauge is 15.5 sts x 22 rows = 10 x 10 cm using 5 mm needles. Sizes range from XS to 3XL, with chest widths from 79–140 cm. I-cord finishes at the hem, neckline, and sleeves give this top a polished look.

Perfect for layering in transitional weather, this is a stylish knit that offers texture and modern shape.

Designer

Craft

Language

Stitch Pattern & Technique

, , , ,

Needle / Hook Size

Meterage (per 50 g)

Difficulty Level

About this Pattern

The Vestvågøy Top (EN) is a breezy and distinctive boxy-fit garment, worked seamlessly from the bottom up. Featuring a modern boatneck, short sleeves, and a rich combination of i-cord edging, garter ridges, and elegant dropped stitches, this top is inspired by the textures of the sea near Lofoten, Norway. The subtle nods to sea urchins, pebbles, and fishing nets add a textural narrative to this lightweight transitional piece. The top includes instructions for a sleeveless version for added versatility.


You can choose between two yarn options, depending on your desired look and feel. The first option is two strands of Lima by Lamana (50g = 200 m; 50% wool, 25% silk, 25% alpaca), providing a dense and cozy structure. The second is one strand of Regina by Lang Yarns (50g = 175 m; 50% cotton, 24% baby alpaca, 20% silk, 6% wool), which offers a more airy and elongated drape. The required amount varies by size:





  • Lima (double strand): 250–500g




  • Regina (single strand): 150–250g




The gauge is 15.5 sts x 22 rows = 10 x 10 cm in pattern after washing using 5 mm needles. This equals a running length of 100 m per 50g for the Lima double strand and 175 m per 50g for Regina.


Sizes range from XS to 3XL, with a recommended positive ease of 4–8 cm. Finished chest circumferences span from 79 to 140 cm, and lengths range from 54 to 67.5 cm (measured mid-back, blocked).


The construction involves working the body in the round up to the armholes, followed by flat knitting for the front and back panels. Shoulders are seamlessly joined using the kitchener stitch. An i-cord can be optionally added to the hem and armholes for a clean finish. Sleeves are worked in the round and shaped with centered double decreases, ending in an i-cord edge.


Whether sleeveless or with short sleeves, the Vestvågøy Top is a stylish and textured knit, perfect for layering across seasons. The rhythmic stitch repeat and visual payoff make it an engaging project for intermediate knitters.

Meet

Vibely Strik

I started knitting when I was at university, and my passion has only grown stronger since then. I am obsessed with everything related to yarn, including macramé weaving and felting. Knitwear design is a new path for me, and I enjoy every minute and every challenge.

Related patterns

Other patterns you might enjoy.

<?php
/**
 * Mini-cart
 *
 * Contains the markup for the mini-cart, used by the cart widget.
 *
 * This template can be overridden by copying it to yourtheme/woocommerce/cart/mini-cart.php.
 *
 * HOWEVER, on occasion WooCommerce will need to update template files and you
 * (the theme developer) will need to copy the new files to your theme to
 * maintain compatibility. We try to do this as little as possible, but it does
 * happen. When this occurs the version of the template file will be bumped and
 * the readme will list any important changes.
 *
 * @see              https://woocommerce.com/document/template-structure/
 * @package          WooCommerce\Templates
 * @version          9.5.0
 * @flatsome-version 3.19.8
 */

defined( 'ABSPATH' ) || exit;

do_action( 'woocommerce_before_mini_cart' ); ?>

<?php if ( WC()->cart && ! WC()->cart->is_empty() ) : ?>

	<ul class="woocommerce-mini-cart cart_list product_list_widget <?php echo esc_attr( $args['list_class'] ); ?>">
		<?php
		do_action( 'woocommerce_before_mini_cart_contents' );

		foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
			$_product   = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key );
			$product_id = apply_filters( 'woocommerce_cart_item_product_id', $cart_item['product_id'], $cart_item, $cart_item_key );

			if ( $_product && $_product->exists() && $cart_item['quantity'] > 0 && apply_filters( 'woocommerce_widget_cart_item_visible', true, $cart_item, $cart_item_key ) ) {
				/**
				 * This filter is documented in woocommerce/templates/cart/cart.php.
				*
				* @since 2.1.0
				*/
				$product_name      = apply_filters( 'woocommerce_cart_item_name', $_product->get_name(), $cart_item, $cart_item_key );
				$thumbnail         = apply_filters( 'woocommerce_cart_item_thumbnail', $_product->get_image(), $cart_item, $cart_item_key );
				$product_price     = apply_filters( 'woocommerce_cart_item_price', WC()->cart->get_product_price( $_product ), $cart_item, $cart_item_key );
				$product_permalink = apply_filters( 'woocommerce_cart_item_permalink', $_product->is_visible() ? $_product->get_permalink( $cart_item ) : '', $cart_item, $cart_item_key );
				?>
				<li class="woocommerce-mini-cart-item <?php echo esc_attr( apply_filters( 'woocommerce_mini_cart_item_class', 'mini_cart_item', $cart_item, $cart_item_key ) ); ?>">
					<?php
					echo apply_filters( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
						'woocommerce_cart_item_remove_link',
						sprintf(
							'<a href="%s" class="remove remove_from_cart_button" aria-label="%s" data-product_id="%s" data-cart_item_key="%s" data-product_sku="%s" data-success_message="%s">&times;</a>',
							esc_url( wc_get_cart_remove_url( $cart_item_key ) ),
							/* translators: %s is the product name */
							esc_attr( sprintf( __( 'Remove %s from cart', 'woocommerce' ), wp_strip_all_tags( $product_name ) ) ),
							esc_attr( $product_id ),
							esc_attr( $cart_item_key ),
							esc_attr( $_product->get_sku() ),
							/* translators: %s is the product name */
							esc_attr( sprintf( __( '&ldquo;%s&rdquo; has been removed from your cart', 'woocommerce' ), wp_strip_all_tags( $product_name ) ) )
						),
						$cart_item_key
					);
					?>
					<?php if ( empty( $product_permalink ) ) : ?>
						<?php echo $thumbnail . wp_kses_post( $product_name ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
					<?php else : ?>
						<a href="<?php echo esc_url( $product_permalink ); ?>">
							<?php echo $thumbnail . wp_kses_post( $product_name ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
						</a>
					<?php endif; ?>
					<?php echo wc_get_formatted_cart_item_data( $cart_item ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
					<?php echo apply_filters( 'woocommerce_widget_cart_item_quantity', '<span class="quantity">' . sprintf( '%s &times; %s', $cart_item['quantity'], $product_price ) . '</span>', $cart_item, $cart_item_key ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
				</li>
				<?php
			}
		}

		do_action( 'woocommerce_mini_cart_contents' );
		?>
	</ul>

	<?php do_action( 'flatsome_after_mini_cart_contents' ); ?>

	<div class="ux-mini-cart-footer">
		<?php do_action( 'flatsome_before_mini_cart_total' ); ?>

		<p class="woocommerce-mini-cart__total total">
			<?php
			/**
			 * Hook: woocommerce_widget_shopping_cart_total.
			*
			* @hooked woocommerce_widget_shopping_cart_subtotal - 10
			*/
			do_action( 'woocommerce_widget_shopping_cart_total' );
			?>
		</p>

		<?php do_action( 'woocommerce_widget_shopping_cart_before_buttons' ); ?>

		<p class="woocommerce-mini-cart__buttons buttons"><?php do_action( 'woocommerce_widget_shopping_cart_buttons' ); ?></p>

		<?php do_action( 'woocommerce_widget_shopping_cart_after_buttons' ); ?>
	</div>

<?php else : ?>

	<div class="ux-mini-cart-empty flex flex-row-col text-center pt pb">
		<?php do_action( 'flatsome_before_mini_cart_empty_message' ); ?>
		<p class="woocommerce-mini-cart__empty-message empty"><?php esc_html_e( 'No products in the cart.', 'woocommerce' ); ?></p>
		<?php do_action( 'flatsome_after_mini_cart_empty_message' ); ?>
	</div>

<?php endif; ?>

<?php do_action( 'woocommerce_after_mini_cart' ); ?>